Annotation of mstools/h/dlcapi.h, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: Copyright (c) 1991-1993  Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     dlcapi.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     This module defines 32-bit Windows/NT DLC structures and manifests
                     12: 
                     13: Revision History:
                     14: 
                     15: --*/
                     16: 
                     17: #ifndef _DLCAPI_
                     18: #define _DLCAPI_
                     19: 
                     20: #ifdef __cplusplus
                     21: extern "C" {
                     22: #endif
                     23: 
                     24: //
                     25: // DLC Command Codes
                     26: //
                     27: 
                     28: #define LLC_DIR_INTERRUPT               0x00
                     29: #define LLC_DIR_OPEN_ADAPTER            0x03
                     30: #define LLC_DIR_CLOSE_ADAPTER           0x04
                     31: #define LLC_DIR_SET_MULTICAST_ADDRESS   0x05
                     32: #define LLC_DIR_SET_GROUP_ADDRESS       0x06
                     33: #define LLC_DIR_SET_FUNCTIONAL_ADDRESS  0x07
                     34: #define LLC_DIR_READ_LOG                0x08
                     35: #define LLC_TRANSMIT_FRAMES             0x09
                     36: #define LLC_TRANSMIT_DIR_FRAME          0x0A
                     37: #define LLC_TRANSMIT_I_FRAME            0x0B
                     38: #define LLC_TRANSMIT_UI_FRAME           0x0D
                     39: #define LLC_TRANSMIT_XID_CMD            0x0E
                     40: #define LLC_TRANSMIT_XID_RESP_FINAL     0x0F
                     41: #define LLC_TRANSMIT_XID_RESP_NOT_FINAL 0x10
                     42: #define LLC_TRANSMIT_TEST_CMD           0x11
                     43: #define LLC_DLC_RESET                   0x14
                     44: #define LLC_DLC_OPEN_SAP                0x15
                     45: #define LLC_DLC_CLOSE_SAP               0x16
                     46: #define LLC_DLC_REALLOCATE_STATIONS     0x17
                     47: #define LLC_DLC_OPEN_STATION            0x19
                     48: #define LLC_DLC_CLOSE_STATION           0x1A
                     49: #define LLC_DLC_CONNECT_STATION         0x1B
                     50: #define LLC_DLC_MODIFY                  0x1C
                     51: #define LLC_DLC_FLOW_CONTROL            0x1D
                     52: #define LLC_DLC_STATISTICS              0x1E
                     53: #define LLC_DIR_INITIALIZE              0x20
                     54: #define LLC_DIR_STATUS                  0x21
                     55: #define LLC_DIR_TIMER_SET               0x22
                     56: #define LLC_DIR_TIMER_CANCEL            0x23
                     57: #define LLC_BUFFER_GET                  0x26
                     58: #define LLC_BUFFER_FREE                 0x27
                     59: #define LLC_RECEIVE                     0x28
                     60: #define LLC_RECEIVE_CANCEL              0x29
                     61: #define LLC_RECEIVE_MODIFY              0x2A
                     62: #define LLC_DIR_TIMER_CANCEL_GROUP      0x2C
                     63: #define LLC_DIR_SET_EXCEPTION_FLAGS     0x2D
                     64: #define LLC_BUFFER_CREATE               0x30
                     65: #define LLC_READ                        0x31
                     66: #define LLC_READ_CANCEL                 0x32
                     67: #define LLC_DLC_SET_THRESHOLD           0x33
                     68: #define LLC_DIR_CLOSE_DIRECT            0x34
                     69: #define LLC_DIR_OPEN_DIRECT             0x35
                     70: #define LLC_MAX_DLC_COMMAND             0x37
                     71: 
                     72: //
                     73: // forward definitions
                     74: //
                     75: 
                     76: union _LLC_PARMS;
                     77: typedef union _LLC_PARMS LLC_PARMS, *PLLC_PARMS;
                     78: 
                     79: //
                     80: // Parameters. Can be pointer to a parameter table (32-bit flat address),
                     81: // a single 32-bit ULONG, 2 16-bit USHORTs or 4 8-bit BYTEs
                     82: //
                     83: 
                     84: typedef union {
                     85: 
                     86:     PLLC_PARMS pParameterTable;     // pointer to the parameter table
                     87: 
                     88:     struct {
                     89:         USHORT usStationId;         // Station id
                     90:         USHORT usParameter;         // optional parameter
                     91:     } dlc;
                     92: 
                     93:     struct {
                     94:         USHORT usParameter0;        // first optional parameter
                     95:         USHORT usParameter1;        // second optional parameter
                     96:     } dir;
                     97: 
                     98:     UCHAR auchBuffer[4];            // group/functional address
                     99: 
                    100:     ULONG ulParameter;
                    101: 
                    102: } CCB_PARMS;
                    103: 
                    104: //
                    105: // LLC_CCB - the Command Control Block structure
                    106: //
                    107: 
                    108: typedef struct _LLC_CCB {
                    109:     UCHAR uchAdapterNumber;         // Adapter 0 or 1
                    110:     UCHAR uchDlcCommand;            // DLC command
                    111:     UCHAR uchDlcStatus;             // DLC command completion code
                    112:     UCHAR uchReserved1;             // reserved for DLC DLL
                    113:     struct _LLC_CCB* pNext;         // CCB chain
                    114:     ULONG ulCompletionFlag;         // used in command completion
                    115:     CCB_PARMS u;                    // parameters
                    116:     HANDLE hCompletionEvent;        // event for command completion
                    117:     UCHAR uchReserved2;             // reserved for DLC DLL
                    118:     UCHAR uchReadFlag;              // set when special READ CCB chained
                    119:     USHORT usReserved3;             // reserved for DLC DLL
                    120: } LLC_CCB, *PLLC_CCB;
                    121: 
                    122: //
                    123: // transmit/receive buffers
                    124: //
                    125: 
                    126: union _LLC_BUFFER;
                    127: typedef union _LLC_BUFFER LLC_BUFFER, *PLLC_BUFFER;
                    128: 
                    129: typedef struct {
                    130:     PLLC_BUFFER pNextBuffer;        // next DLC buffer in frame
                    131:     USHORT cbFrame;                 // length of the whole received frame
                    132:     USHORT cbBuffer;                // length of this segment
                    133:     USHORT offUserData;             // offset of data from descriptor header
                    134:     USHORT cbUserData;              // length of the data
                    135: } LLC_NEXT_BUFFER;
                    136: 
                    137: typedef struct {
                    138:     PLLC_BUFFER pNextBuffer;        // next buffer of frame
                    139:     USHORT cbFrame;                 // length of entire frame
                    140:     USHORT cbBuffer;                // length of this buffer
                    141:     USHORT offUserData;             // user data in this struct
                    142:     USHORT cbUserData;              // length of user data
                    143:     USHORT usStationId;             // ssnn station id
                    144:     UCHAR uchOptions;               // option byte from RECEIVE param tbl
                    145:     UCHAR uchMsgType;               // the message type
                    146:     USHORT cBuffersLeft;            // number of basic buffer units left
                    147:     UCHAR uchRcvFS;                 // the reveived frame status
                    148:     UCHAR uchAdapterNumber;         // adapter number
                    149:     PLLC_BUFFER pNextFrame;         // pointer to next frame
                    150:     UCHAR cbLanHeader;              // length of the lan header
                    151:     UCHAR cbDlcHeader;              // length of the DLC header
                    152:     UCHAR auchLanHeader[32];        // lan header of the received frame
                    153:     UCHAR auchDlcHeader[4];         // dlc header of the received frame
                    154:     USHORT usPadding;               // data begins from offset 64 !!!
                    155: } LLC_NOT_CONTIGUOUS_BUFFER;
                    156: 
                    157: typedef struct {
                    158:     PLLC_BUFFER pNextBuffer;        // next buffer of frame
                    159:     USHORT cbFrame;                 // length of entire frame
                    160:     USHORT cbBuffer;                // length of this buffer
                    161:     USHORT offUserData;             // user data in this struct
                    162:     USHORT cbUserData;              // length of user data
                    163:     USHORT usStationId;             // ssnn station id
                    164:     UCHAR uchOptions;               // option byte from RECEIVE param tbl
                    165:     UCHAR uchMsgType;               // the message type
                    166:     USHORT cBuffersLeft;            // number of basic buffer units left
                    167:     UCHAR uchRcvFS;                 // the reveived frame status
                    168:     UCHAR uchAdapterNumber;         // adapter number
                    169:     PLLC_BUFFER pNextFrame;         // pointer to next frame
                    170: } LLC_CONTIGUOUS_BUFFER;
                    171: 
                    172: //
                    173: // Received frames are returned in these data structures
                    174: //
                    175: 
                    176: union _LLC_BUFFER {
                    177: 
                    178:     PLLC_BUFFER pNext;
                    179: 
                    180:     LLC_NEXT_BUFFER Next;
                    181: 
                    182:     struct LlcNextBuffer {
                    183:         LLC_NEXT_BUFFER Header;
                    184:         UCHAR auchData[];
                    185:     } Buffer;
                    186: 
                    187:     LLC_NOT_CONTIGUOUS_BUFFER NotContiguous;
                    188: 
                    189:     struct {
                    190:         LLC_NOT_CONTIGUOUS_BUFFER Header;
                    191:         UCHAR auchData[];
                    192:     } NotCont;
                    193: 
                    194:     LLC_CONTIGUOUS_BUFFER Contiguous;
                    195: 
                    196:     struct {
                    197:         LLC_CONTIGUOUS_BUFFER Header;
                    198:         UCHAR auchData[];
                    199:     } Cont;
                    200: 
                    201: };
                    202: 
                    203: //
                    204: // This structure is used by BUFFER.GET, BUFFER.FREE and TRANSMIT
                    205: //
                    206: 
                    207: struct _LLC_XMIT_BUFFER;
                    208: typedef struct _LLC_XMIT_BUFFER LLC_XMIT_BUFFER, *PLLC_XMIT_BUFFER;
                    209: 
                    210: struct _LLC_XMIT_BUFFER {
                    211:     PLLC_XMIT_BUFFER pNext;         // next buffer (or NULL)
                    212:     USHORT usReserved1;             //
                    213:     USHORT cbBuffer;                // length of transmitted data
                    214:     USHORT usReserved2;             //
                    215:     USHORT cbUserData;              // length of optional header
                    216:     UCHAR auchData[];               // optional header and transmitted data
                    217: };
                    218: 
                    219: #define LLC_XMIT_BUFFER_SIZE sizeof(LLC_XMIT_BUFFER)
                    220: 
                    221: //
                    222: // CCB parameter tables
                    223: //
                    224: 
                    225: typedef struct {
                    226:     HANDLE hBufferPool;             // handle of new buffer pool
                    227:     PVOID pBuffer;                  // any buffer in memory
                    228:     ULONG cbBufferSize;             // buffer size in bytes
                    229:     ULONG cbMinimumSizeThreshold;   // minimum locked size
                    230: } LLC_BUFFER_CREATE_PARMS, *PLLC_BUFFER_CREATE_PARMS;
                    231: 
                    232: typedef struct {
                    233:     USHORT usReserved1;             // Station id is not used
                    234:     USHORT cBuffersLeft;            // free 256 buffer segments
                    235:     ULONG ulReserved;
                    236:     PLLC_XMIT_BUFFER pFirstBuffer;  // buffer chain
                    237: } LLC_BUFFER_FREE_PARMS, *PLLC_BUFFER_FREE_PARMS;
                    238: 
                    239: typedef struct {
                    240:     USHORT usReserved1;             // Station id is not used
                    241:     USHORT cBuffersLeft;            // free 256 buffer segments
                    242: 
                    243:     //
                    244:     // cBuffersToGet: number of buffers to get. If 0, the returned buffer list
                    245:     // may consist of segment of different size
                    246:     //
                    247: 
                    248:     USHORT cBuffersToGet;
                    249: 
                    250:     //
                    251:     // cbBufferSize: size of the requested buffers. This will be rounded up to
                    252:     // the next largest segment size: 256, 512, 1024, 2048 or 4096
                    253:     //
                    254: 
                    255:     USHORT cbBufferSize;
                    256:     PLLC_XMIT_BUFFER pFirstBuffer;
                    257: } LLC_BUFFER_GET_PARMS, *PLLC_BUFFER_GET_PARMS;
                    258: 
                    259: //
                    260: // parameter table for DLC.CONNECT.STATION
                    261: //
                    262: 
                    263: typedef struct {
                    264:     USHORT usStationId;             // SAP or direct station ID, defines the pool
                    265:     USHORT usReserved;
                    266:     PUCHAR pRoutingInfo;            // offset to the routing info
                    267: } LLC_DLC_CONNECT_PARMS, *PLLC_DLC_CONNECT_PARMS;
                    268: 
                    269: //
                    270: // DLC_FLOW_CONTROL Options:
                    271: //
                    272: 
                    273: #define LLC_RESET_LOCAL_BUSY_USER   0x80
                    274: #define LLC_RESET_LOCAL_BUSY_BUFFER 0xC0
                    275: #define LLC_SET_LOCAL_BUSY_USER     0
                    276: 
                    277: typedef struct {
                    278:     USHORT usRes;
                    279:     USHORT usStationId;             // SAP or link station id
                    280:     UCHAR uchT1;                    // response timer
                    281:     UCHAR uchT2;                    // aknowledgment timer
                    282:     UCHAR uchTi;                    // inactivity timer
                    283:     UCHAR uchMaxOut;                // max transmits without ack
                    284:     UCHAR uchMaxIn;                 // max receives without ack
                    285:     UCHAR uchMaxOutIncr;            // dynamic window increment value
                    286:     UCHAR uchMaxRetryCnt;           // N2 value (retries)
                    287:     UCHAR uchReserved1;
                    288:     USHORT usMaxInfoFieldLength;    // Only for link stations, NEW!!!
                    289:     UCHAR uchAccessPriority;        // token ring access priority
                    290:     UCHAR auchReserved3[4];
                    291:     UCHAR cGroupCount;              // number of group SAPs of this SAP
                    292:     PUCHAR pGroupList;              // offset to the group list
                    293: } LLC_DLC_MODIFY_PARMS, *PLLC_DLC_MODIFY_PARMS;
                    294: 
                    295: #define LLC_XID_HANDLING_IN_APPLICATION 0x08
                    296: #define LLC_XID_HANDLING_IN_DLC         0
                    297: #define LLC_INDIVIDUAL_SAP              0x04
                    298: #define LLC_GROUP_SAP                   0x02
                    299: #define LLC_MEMBER_OF_GROUP_SAP         0x01
                    300: 
                    301: typedef struct {
                    302:     USHORT usStationId;             // SAP or link station id
                    303:     USHORT usUserStatValue;         // reserved for user
                    304:     UCHAR uchT1;                    // response timer
                    305:     UCHAR uchT2;                    // aknowledgment timer
                    306:     UCHAR uchTi;                    // inactivity timer
                    307:     UCHAR uchMaxOut;                // max tramists without ack
                    308:     UCHAR uchMaxIn;                 // max receives without ack
                    309:     UCHAR uchMaxOutIncr;            // dynamic window increment value
                    310:     UCHAR uchMaxRetryCnt;           // N2 value (retries)
                    311:     UCHAR uchMaxMembers;            // maximum members for group SAP
                    312:     USHORT usMaxI_Field;            // maximum length of the Info field
                    313:     UCHAR uchSapValue;              // SAP value to be assigned
                    314:     UCHAR uchOptionsPriority;       // SAP options and access priority
                    315:     UCHAR uchcStationCount;         // maximum number of link stations in sap
                    316:     UCHAR uchReserved2[2];          //
                    317:     UCHAR cGroupCount;              // number of group SAPs of this SAP
                    318:     PUCHAR pGroupList;              // offset to the group list
                    319:     ULONG DlcStatusFlags;           // User notify flag for DLC status changes
                    320:     UCHAR uchReserved3[8];          // reserved
                    321:     UCHAR cLinkStationsAvail;       // total number of available link stations
                    322: } LLC_DLC_OPEN_SAP_PARMS, *PLLC_DLC_OPEN_SAP_PARMS;
                    323: 
                    324: typedef struct {
                    325:     USHORT usSapStationId;          // SAP station id
                    326:     USHORT usLinkStationId;         // Link station id
                    327:     UCHAR uchT1;                    // response timer
                    328:     UCHAR uchT2;                    // aknowledgment timer
                    329:     UCHAR uchTi;                    // inactivity timer
                    330:     UCHAR uchMaxOut;                // max tramists without ack
                    331:     UCHAR uchMaxIn;                 // max receives without ack
                    332:     UCHAR uchMaxOutIncr;            // dynamic window increment value
                    333:     UCHAR uchMaxRetryCnt;           // N2 value (retries)
                    334:     UCHAR uchRemoteSap;             // remote SAP of the link
                    335:     USHORT usMaxI_Field;            // max I field length
                    336:     UCHAR uchAccessPriority;        // token ring access priority
                    337:     PVOID pRemoteNodeAddress;       // pointer to the destination address
                    338: } LLC_DLC_OPEN_STATION_PARMS, *PLLC_DLC_OPEN_STATION_PARMS;
                    339: 
                    340: #define LLC_INCREASE_LINK_STATIONS  0
                    341: #define LLC_DECREASE_LINK_STATIONS  0x80
                    342: 
                    343: typedef struct {
                    344:     USHORT usStationId;             // ID of affected SAP
                    345:     UCHAR uchOption;                // increase of decrease indicator
                    346:     UCHAR uchStationCount;
                    347:     UCHAR uchStationsAvailOnAdapter;
                    348:     UCHAR uchStationsAvailOnSap;
                    349:     UCHAR uchTotalStationsOnAdapter;
                    350:     UCHAR uchTotalStationsOnSap;
                    351: } LLC_DLC_REALLOCATE_PARMS, *PLLC_DLC_REALLOCATE_PARMS;
                    352: 
                    353: typedef struct {
                    354:     USHORT usStationId;             // SAP station ID
                    355:     USHORT cBufferThreshold;        // SAP buffer pool Threshold number
                    356:     PVOID AlertEvent;               // alerting event
                    357: } LLC_DLC_SET_THRESHOLD_PARMS, *PLLC_DLC_SET_THRESHOLD_PARMS;
                    358: 
                    359: typedef struct {
                    360:     PVOID TraceBuffer;              // trace buffer
                    361:     ULONG TraceBufferSize;          // trace buffer size
                    362:     ULONG TraceFlags;               // various trace flags
                    363: } LLC_TRACE_INITIALIZE_PARMS, *PLLC_TRACE_INITIALIZE_PARMS;
                    364: 
                    365: #define LLC_DLC_RESET_STATISTICS    0x80
                    366: #define LLC_DLC_READ_STATISTICS     0
                    367: 
                    368: typedef struct {
                    369:     ULONG cTransmittedFrames;
                    370:     ULONG cReceivedFrames;
                    371:     ULONG cDiscardedFrames;
                    372:     ULONG cDataLost;
                    373:     USHORT cBuffersAvailable;
                    374: } DLC_SAP_LOG, *PDLC_SAP_LOG;
                    375: 
                    376: typedef struct {
                    377:     USHORT cI_FramesTransmitted;
                    378:     USHORT cI_FramesReceived;
                    379:     UCHAR cI_FrameReceiveErrors;
                    380:     UCHAR cI_FrameTransmissionErrors;
                    381:     USHORT cT1_ExpirationCount;     // Note: not OUT data xfer mode
                    382:     UCHAR uchLastCmdRespReceived;
                    383:     UCHAR uchLastCmdRespTransmitted;
                    384:     UCHAR uchPrimaryState;
                    385:     UCHAR uchSecondaryState;
                    386:     UCHAR uchSendStateVariable;
                    387:     UCHAR uchReceiveStateVariable;
                    388:     UCHAR uchLastNr;                // last received NR
                    389:     UCHAR cbLanHeader;
                    390:     UCHAR auchLanHeader[32];
                    391: } DLC_LINK_LOG, *PDLC_LINK_LOG;
                    392: 
                    393: typedef union {
                    394:     DLC_SAP_LOG Sap;
                    395:     DLC_LINK_LOG Link;
                    396: } LLC_DLC_LOG_BUFFER, *PLLC_DLC_LOG_BUFFER;
                    397: 
                    398: typedef struct {
                    399:     USHORT usStationId;             // ID of a SAP or a link station
                    400:     USHORT cbLogBufSize;            //
                    401:     PLLC_DLC_LOG_BUFFER pLogBuf;    // offset to the log buffer
                    402:     USHORT usActLogLength;          // length of returned log
                    403:     UCHAR uchOptions;               // command options (bit7 resets log params)
                    404: } LLC_DLC_STATISTICS_PARMS, *PLLC_DLC_STATISTICS_PARMS;
                    405: 
                    406: typedef struct {
                    407:     USHORT usBringUps;              // Token Ring adapter bring up error code
                    408:     UCHAR Reserved[30];             // everything else specific to DOS or OS/2
                    409: } LLC_DIR_INITIALIZE_PARMS, *PLLC_DIR_INITIALIZE_PARMS;
                    410: 
                    411: typedef struct {
                    412:     USHORT usOpenErrorCode;         // open adapter errors detected
                    413:     USHORT usOpenOptions;           // various options
                    414:     UCHAR auchNodeAddress[6];       // adapters LAN address
                    415:     UCHAR auchGroupAddress[4];      // multicast address added in the open
                    416:     UCHAR auchFunctionalAddress[4]; // added token ring functional address
                    417:     USHORT usReserved1;
                    418:     USHORT usReserved2;
                    419:     USHORT usMaxFrameSize;          // maximum frame size defined in NDIS
                    420:     USHORT usReserved3[4];
                    421:     USHORT usBringUps;              // Bring up errors, TR only
                    422:     USHORT InitWarnings;
                    423:     USHORT usReserved4[3];
                    424: } LLC_ADAPTER_OPEN_PARMS, *PLLC_ADAPTER_OPEN_PARMS;
                    425: 
                    426: typedef struct {
                    427:     UCHAR uchDlcMaxSaps;
                    428:     UCHAR uchDlcMaxStations;
                    429:     UCHAR uchDlcMaxGroupSaps;
                    430:     UCHAR uchDlcMaxGroupMembers;
                    431:     UCHAR uchT1_TickOne;            // Short timer interval (for 1 - 5)
                    432:     UCHAR uchT2_TickOne;
                    433:     UCHAR uchTi_TickOne;
                    434:     UCHAR uchT1_TickTwo;            // Long timer interval (for 6 - 10)
                    435:     UCHAR uchT2_TickTwo;
                    436:     UCHAR uchTi_TickTwo;
                    437: } LLC_DLC_PARMS, *PLLC_DLC_PARMS;
                    438: 
                    439: //
                    440: // The ethernet mode selects the LAN header format of ethernet. SNA
                    441: // applications should use the default parameter, that has been defined in the
                    442: // registry. The applications using connectionless DLC services should select
                    443: // the ethernet LLC LAN header format they are using (usually 802.3)
                    444: //
                    445: 
                    446: typedef enum {
                    447:     LLC_ETHERNET_TYPE_DEFAULT,      // use the parameter value set in registry
                    448:     LLC_ETHERNET_TYPE_AUTO,         // automatic header type selction for links
                    449:     LLC_ETHERNET_TYPE_802_3,        // use always 802.3 lan headers
                    450:     LLC_ETHERNET_TYPE_DIX           // use always LLC on DIX SNA type.
                    451: } LLC_ETHERNET_TYPE, *PLLC_ETHERNET_TYPE;
                    452: 
                    453: typedef struct {
                    454:     PVOID hBufferPool;
                    455:     PVOID pSecurityDescriptor;
                    456:     LLC_ETHERNET_TYPE LlcEthernetType;
                    457: } LLC_EXTENDED_ADAPTER_PARMS, *PLLC_EXTENDED_ADAPTER_PARMS;
                    458: 
                    459: typedef struct {
                    460:     PLLC_ADAPTER_OPEN_PARMS pAdapterParms;      // ADAPTER_PARMS
                    461:     PLLC_EXTENDED_ADAPTER_PARMS pExtendedParms; // DIRECT_PARMS
                    462:     PLLC_DLC_PARMS pDlcParms;                   // DLC_PARMS
                    463:     PVOID pReserved1;                           // NCB_PARMS
                    464: } LLC_DIR_OPEN_ADAPTER_PARMS, *PLLC_DIR_OPEN_ADAPTER_PARMS;
                    465: 
                    466: typedef struct {
                    467:     UCHAR auchMulticastAddress[6];  // 48 bit multicast address
                    468: } LLC_DIR_MULTICAST_ADDRESS, *PLLC_DIR_MULTICAST_ADDRESS;
                    469: 
                    470: #define LLC_DIRECT_OPTIONS_ALL_MACS 0x1880
                    471: 
                    472: typedef struct {
                    473:     USHORT Reserved[4];
                    474:     USHORT usOpenOptions;
                    475:     USHORT usEthernetType;
                    476:     ULONG ulProtocolTypeMask;
                    477:     ULONG ulProtocolTypeMatch;
                    478:     USHORT usProtocolTypeOffset;
                    479: } LLC_DIR_OPEN_DIRECT_PARMS, *PLLC_DIR_OPEN_DIRECT_PARMS;
                    480: 
                    481: typedef struct {
                    482:     UCHAR cLineError;
                    483:     UCHAR cInternalError;
                    484:     UCHAR cBurstError;
                    485:     UCHAR cAC_Error;
                    486:     UCHAR cAbortDelimiter;
                    487:     UCHAR uchReserved1;
                    488:     UCHAR cLostFrame;
                    489:     UCHAR cReceiveCongestion;
                    490:     UCHAR cFrameCopiedError;
                    491:     UCHAR cFrequencyError;
                    492:     UCHAR cTokenError;
                    493:     UCHAR uchReserved2;
                    494:     UCHAR uchReserved3;
                    495:     UCHAR uchReserved4;
                    496: } LLC_ADAPTER_LOG_TR, *PLLC_ADAPTER_LOG_TR;
                    497: 
                    498: typedef struct {
                    499:     UCHAR cCRC_Error;
                    500:     UCHAR uchReserved1;
                    501:     UCHAR cAlignmentError;
                    502:     UCHAR uchReserved2;
                    503:     UCHAR cTransmitError;
                    504:     UCHAR uchReserved3;
                    505:     UCHAR cCollisionError;
                    506:     UCHAR cReceiveCongestion;
                    507:     UCHAR uchReserved[6];
                    508: } LLC_ADAPTER_LOG_ETH, *PLLC_ADAPTER_LOG_ETH;
                    509: 
                    510: typedef union {
                    511:     LLC_ADAPTER_LOG_TR Tr;
                    512:     LLC_ADAPTER_LOG_ETH Eth;
                    513: } LLC_ADAPTER_LOG, *PLLC_ADAPTER_LOG;
                    514: 
                    515: typedef struct {
                    516:     ULONG cTransmittedFrames;
                    517:     ULONG cReceivedFrames;
                    518:     ULONG cDiscardedFrames;
                    519:     ULONG cDataLost;
                    520:     USHORT cBuffersAvailable;
                    521: } LLC_DIRECT_LOG, *PLLC_DIRECT_LOG;
                    522: 
                    523: typedef union {
                    524:     LLC_ADAPTER_LOG Adapter;
                    525:     LLC_DIRECT_LOG Dir;
                    526: 
                    527:     struct {
                    528:         LLC_ADAPTER_LOG Adapter;
                    529:         LLC_DIRECT_LOG Dir;
                    530:     } both;
                    531: 
                    532: } LLC_DIR_READ_LOG_BUFFER, *PLLC_DIR_READ_LOG_BUFFER;
                    533: 
                    534: #define LLC_DIR_READ_LOG_ADAPTER    0
                    535: #define LLC_DIR_READ_LOG_DIRECT     1
                    536: #define LLC_DIR_READ_LOG_BOTH       2
                    537: 
                    538: typedef struct {
                    539:     USHORT usTypeId;                    // 0=adapter, 1=direct, 2=both logs
                    540:     USHORT cbLogBuffer;                 // size of log buffer
                    541:     PLLC_DIR_READ_LOG_BUFFER pLogBuffer;// pointer to log buffer
                    542:     USHORT cbActualLength;              // returned size of log buffer
                    543: } LLC_DIR_READ_LOG_PARMS, *PLLC_DIR_READ_LOG_PARMS;
                    544: 
                    545: typedef struct {
                    546:     ULONG ulAdapterCheckFlag;
                    547:     ULONG ulNetworkStatusFlag;
                    548:     ULONG ulPcErrorFlag;
                    549:     ULONG ulSystemActionFlag;
                    550: } LLC_DIR_SET_EFLAG_PARMS, *PLLC_DIR_SET_EFLAG_PARMS;
                    551: 
                    552: #define LLC_ADAPTER_ETHERNET    0x0010
                    553: #define LLC_ADAPTER_TOKEN_RING  0x0040
                    554: 
                    555: typedef struct {
                    556:     UCHAR auchPermanentAddress[6];  // permanent encoded address
                    557:     UCHAR auchNodeAddress[6];       // adapter's network address
                    558:     UCHAR auchGroupAddress[4];      // adapter's group address
                    559:     UCHAR auchFunctAddr[4];         // adapter's functional address
                    560:     UCHAR uchMaxSap;                // maximum allowable SAP
                    561:     UCHAR uchOpenSaps;              // number of currently open saps
                    562:     UCHAR uchMaxStations;           // max number of stations (always 253)
                    563:     UCHAR uchOpenStation;           // number of open stations (only up to 253)
                    564:     UCHAR uchAvailStations;         // number of available stations (always 253)
                    565:     UCHAR uchAdapterConfig;         // adapter configuration flags
                    566:     UCHAR auchReserved1[10];        // microcode level
                    567:     ULONG ulReserved1;
                    568:     ULONG ulReserved2;
                    569:     ULONG ulMaxFrameLength;         // maximum frame length (only in Windows/Nt)
                    570:     USHORT usLastNetworkStatus;
                    571:     USHORT usAdapterType;           // THIS BYTE IS NOT USED IN DOS DLC !!!
                    572: } LLC_DIR_STATUS_PARMS, *PLLC_DIR_STATUS_PARMS;
                    573: 
                    574: 
                    575: #define LLC_OPTION_READ_STATION 0
                    576: #define LLC_OPTION_READ_SAP     1
                    577: #define LLC_OPTION_READ_ALL     2
                    578: 
                    579: #define LLC_EVENT_SYSTEM_ACTION         0x0040
                    580: #define LLC_EVENT_NETWORK_STATUS        0x0020
                    581: #define LLC_EVENT_CRITICAL_EXCEPTION    0x0010
                    582: #define LLC_EVENT_STATUS_CHANGE         0x0008
                    583: #define LLC_EVENT_RECEIVE_DATA          0x0004
                    584: #define LLC_EVENT_TRANSMIT_COMPLETION   0x0002
                    585: #define LLC_EVENT_COMMAND_COMPLETION    0x0001
                    586: #define LLC_READ_ALL_EVENTS             0x007F
                    587: 
                    588: //
                    589: // LLC_STATUS_CHANGE indications
                    590: // The returned status value may be an inclusive-OR of several flags
                    591: //
                    592: 
                    593: #define LLC_INDICATE_LINK_LOST              0x8000
                    594: #define LLC_INDICATE_DM_DISC_RECEIVED       0x4000
                    595: #define LLC_INDICATE_FRMR_RECEIVED          0x2000
                    596: #define LLC_INDICATE_FRMR_SENT              0x1000
                    597: #define LLC_INDICATE_RESET                  0x0800
                    598: #define LLC_INDICATE_CONNECT_REQUEST        0x0400
                    599: #define LLC_INDICATE_REMOTE_BUSY            0x0200
                    600: #define LLC_INDICATE_REMOTE_READY           0x0100
                    601: #define LLC_INDICATE_TI_TIMER_EXPIRED       0x0080
                    602: #define LLC_INDICATE_DLC_COUNTER_OVERFLOW   0x0040
                    603: #define LLC_INDICATE_ACCESS_PRTY_LOWERED    0x0020
                    604: #define LLC_INDICATE_LOCAL_STATION_BUSY     0x0001
                    605: 
                    606: typedef struct {
                    607:     USHORT usStationId;
                    608:     UCHAR uchOptionIndicator;
                    609:     UCHAR uchEventSet;
                    610:     UCHAR uchEvent;
                    611:     UCHAR uchCriticalSubset;
                    612:     ULONG ulNotificationFlag;
                    613: 
                    614:     union {
                    615: 
                    616:         struct {
                    617:             USHORT usCcbCount;
                    618:             PLLC_CCB pCcbCompletionList;
                    619:             USHORT usBufferCount;
                    620:             PLLC_BUFFER pFirstBuffer;
                    621:             USHORT usReceivedFrameCount;
                    622:             PLLC_BUFFER pReceivedFrame;
                    623:             USHORT usEventErrorCode;
                    624:             USHORT usEventErrorData[3];
                    625:         } Event;
                    626: 
                    627:         struct {
                    628:             USHORT usStationId;
                    629:             USHORT usDlcStatusCode;
                    630:             UCHAR uchFrmrData[5];
                    631:             UCHAR uchAccessPritority;
                    632:             UCHAR uchRemoteNodeAddress[6];
                    633:             UCHAR uchRemoteSap;
                    634:             UCHAR uchReserved;
                    635:             USHORT usUserStatusValue;
                    636:         } Status;
                    637: 
                    638:     } Type;
                    639: 
                    640: } LLC_READ_PARMS, *PLLC_READ_PARMS;
                    641: 
                    642: //
                    643: // This data structure gives the best performance in Windows/Nt: The DLC driver
                    644: // must copy the CCB and the parameter table. If the driver knows that the
                    645: // parameter table is concatenated to the CCB, it can copy both structures at
                    646: // once. NOTE: The pointer to the parameter table MUST still be present in the
                    647: // CCB
                    648: //
                    649: 
                    650: typedef struct {
                    651:     LLC_CCB Ccb;
                    652:     LLC_READ_PARMS Parms;
                    653: } LLC_READ_COMMAND, *PLLC_READ_COMMAND;
                    654: 
                    655: //
                    656: // New receive types for direct stations, these types are ignored if the direct
                    657: // station was opened with a specific ethernet type
                    658: //
                    659: 
                    660: #define LLC_DIR_RCV_ALL_TR_FRAMES       0
                    661: #define LLC_DIR_RCV_ALL_MAC_FRAMES      1
                    662: #define LLC_DIR_RCV_ALL_8022_FRAMES     2
                    663: #define LLC_DIR_RCV_ALL_FRAMES          4
                    664: #define LLC_DIR_RCV_ALL_ETHERNET_TYPES  5
                    665: 
                    666: #define LLC_CONTIGUOUS_MAC      0x80
                    667: #define LLC_CONTIGUOUS_DATA     0x40
                    668: #define LLC_NOT_CONTIGUOUS_DATA 0x00
                    669: 
                    670: //
                    671: // LLC_BREAK (0x20) is not supported by Windows/Nt
                    672: //
                    673: 
                    674: #define LLC_RCV_READ_INDIVIDUAL_FRAMES  0
                    675: #define LLC_RCV_CHAIN_FRAMES_ON_LINK    1
                    676: #define LLC_RCV_CHAIN_FRAMES_ON_SAP     2
                    677: 
                    678: typedef struct {
                    679:     USHORT usStationId;             // SAP, link station or direct id
                    680:     USHORT usUserLength;            // length of user data in buffer header
                    681:     ULONG ulReceiveFlag;            // the received data handler
                    682:     PLLC_BUFFER pFirstBuffer;       // first buffer in the pool
                    683:     UCHAR uchOptions;               // defines how the frame is received
                    684:     UCHAR auchReserved1[3];
                    685:     UCHAR uchRcvReadOption;         // defines if rcv frames are chained
                    686: } LLC_RECEIVE_PARMS, *PLLC_RECEIVE_PARMS;
                    687: 
                    688: #define LLC_CHAIN_XMIT_COMMANDS_ON_LINK 0
                    689: #define LLC_COMPLETE_SINGLE_XMIT_FRAME  1
                    690: #define LLC_CHAIN_XMIT_COMMANDS_ON_SAP  2
                    691: 
                    692: typedef struct {
                    693:     USHORT usStationId;             // SAP, link station or direct id
                    694:     UCHAR uchTransmitFs;            // token-ring frame status
                    695:     UCHAR uchRemoteSap;             // remote destination SAP
                    696:     PLLC_XMIT_BUFFER pXmitQueue1;   // first link list of frame segments
                    697:     PLLC_XMIT_BUFFER pXmitQueue2;   // another segment list returuned to pool
                    698:     USHORT cbBuffer1;               // length of buffer 1
                    699:     USHORT cbBuffer2;               // length of buffer 2
                    700:     PVOID pBuffer1;                 // yet another segment
                    701:     PVOID pBuffer2;                 // this is the last segment of frame
                    702:     UCHAR uchXmitReadOption;        // defines completion event for READ
                    703: } LLC_TRANSMIT_PARMS,  *PLLC_TRANSMIT_PARMS;
                    704: 
                    705: #define LLC_FIRST_DATA_SEGMENT  0x01
                    706: #define LLC_NEXT_DATA_SEGMENT   0x02
                    707: 
                    708: typedef struct {
                    709:     UCHAR eSegmentType;             // defines if first or next segment of frame
                    710:     UCHAR boolFreeBuffer;           // if set, this buffer is released to pool
                    711:     USHORT cbBuffer;                // length of this buffer
                    712:     PVOID pBuffer;
                    713: } LLC_TRANSMIT_DESCRIPTOR, *PLLC_TRANSMIT_DESCRIPTOR;
                    714: 
                    715: //
                    716: // The frames types returned in the first receive buffer or used with the
                    717: // TRANSMIT_FRAMES command.  A direct station may also send only ethernet
                    718: // frames. The ethernet types are only for transmit. Types 0x0019 - 0x05DC
                    719: // are reserved
                    720: //
                    721: 
                    722: enum _LLC_FRAME_TYPES {                     // Purpose:
                    723:     LLC_DIRECT_TRANSMIT         = 0x0000,   // transmit
                    724:     LLC_DIRECT_MAC              = 0x0002,   // receive
                    725:     LLC_I_FRAME                 = 0x0004,   // receive & transmit
                    726:     LLC_UI_FRAME                = 0x0006,   // receive & transmit
                    727:     LLC_XID_COMMAND_POLL        = 0x0008,   // receive & transmit
                    728:     LLC_XID_COMMAND_NOT_POLL    = 0x000A,   // receive & transmit
                    729:     LLC_XID_RESPONSE_FINAL      = 0x000C,   // receive & transmit
                    730:     LLC_XID_RESPONSE_NOT_FINAL  = 0x000E,   // receive & transmit
                    731:     LLC_TEST_RESPONSE_FINAL     = 0x0010,   // receive & transmit
                    732:     LLC_TEST_RESPONSE_NOT_FINAL = 0x0012,   // receive & transmit
                    733:     LLC_DIRECT_8022             = 0x0014,   // receive (direct station)
                    734:     LLC_TEST_COMMAND_POLL       = 0x0016,   // transmit
                    735:     LLC_DIRECT_ETHERNET_TYPE    = 0x0018,   // receive (direct station)
                    736:     LLC_LAST_FRAME_TYPE         = 0x001a,   // reserved
                    737:     LLC_FIRST_ETHERNET_TYPE     = 0x05DD    // transmit (>)
                    738: };
                    739: 
                    740: typedef struct {
                    741:     LLC_CCB Ccb;                    // use this as transmit CCB
                    742:     USHORT usStationId;
                    743:     USHORT usFrameType;             // DLC frame or ethernet type
                    744:     UCHAR uchRemoteSap;             // used with UI, TEST, XID frames
                    745:     UCHAR uchXmitReadOption;
                    746:     UCHAR Reserved2[2];
                    747:     ULONG cXmitBufferCount;
                    748:     LLC_TRANSMIT_DESCRIPTOR aXmitBuffer[1];
                    749: } LLC_TRANSMIT2_COMMAND, *PLLC_TRANSMIT2_COMMAND;
                    750: 
                    751: //
                    752: // LLC_TRANSMIT2_VAR_PARMS - this macro allocates space for variable length
                    753: // descriptor array, eg: LLC_TRANSMIT2_VAR_PARMS(8) TransmitParms;
                    754: //
                    755: 
                    756: #define LLC_TRANSMIT2_VAR_PARMS(a)\
                    757: struct {\
                    758:     LLC_CCB Ccb;\
                    759:     USHORT usStationId;\
                    760:     USHORT usFrameType;\
                    761:     UCHAR uchRemoteSap;\
                    762:     UCHAR uchXmitReadOption;\
                    763:     UCHAR uchReserved2[2];\
                    764:     ULONG cXmitBufferCount;\
                    765:     LLC_TRANSMIT_DESCRIPTOR XmitBuffer[(a)];\
                    766: }
                    767: 
                    768: //
                    769: // LLC_PARMS - All CCB parameter tables can be referred to using this union
                    770: //
                    771: 
                    772: union _LLC_PARMS {
                    773:     LLC_BUFFER_FREE_PARMS BufferFree;
                    774:     LLC_BUFFER_GET_PARMS BufferGet;
                    775:     LLC_DLC_CONNECT_PARMS DlcConnectStation;
                    776:     LLC_DLC_MODIFY_PARMS DlcModify;
                    777:     LLC_DLC_OPEN_SAP_PARMS DlcOpenSap;
                    778:     LLC_DLC_OPEN_STATION_PARMS DlcOpenStation;
                    779:     LLC_DLC_REALLOCATE_PARMS DlcReallocate;
                    780:     LLC_DLC_SET_THRESHOLD_PARMS DlcSetThreshold;
                    781:     LLC_DLC_STATISTICS_PARMS DlcStatistics;
                    782:     LLC_DIR_INITIALIZE_PARMS DirInitialize;
                    783:     LLC_DIR_OPEN_ADAPTER_PARMS DirOpenAdapter;
                    784:     LLC_DIR_OPEN_DIRECT_PARMS DirOpenDirect;
                    785:     LLC_DIR_READ_LOG_PARMS DirReadLog;
                    786:     LLC_DIR_SET_EFLAG_PARMS DirSetEventFlag;
                    787:     LLC_DIR_STATUS_PARMS DirStatus;
                    788:     LLC_READ_PARMS Read;
                    789:     LLC_RECEIVE_PARMS Receive;
                    790:     LLC_TRANSMIT_PARMS Transmit;
                    791:     LLC_TRANSMIT2_COMMAND Transmit2;
                    792:     LLC_TRACE_INITIALIZE_PARMS TraceInitialize;
                    793: };
                    794: 
                    795: //
                    796: // LLC_STATUS - enumerates the return codes which appear in the CCB uchDlcStatus
                    797: // field
                    798: //
                    799: 
                    800: typedef enum _LLC_STATUS {
                    801:     LLC_STATUS_SUCCESS                      = 0x00,
                    802:     LLC_STATUS_INVALID_COMMAND              = 0x01,
                    803:     LLC_STATUS_DUPLICATE_COMMAND            = 0x02,
                    804:     LLC_STATUS_ADAPTER_OPEN                 = 0x03,
                    805:     LLC_STATUS_ADAPTER_CLOSED               = 0x04,
                    806:     LLC_STATUS_PARAMETER_MISSING            = 0x05,
                    807:     LLC_STATUS_INVALID_OPTION               = 0x06,
                    808:     LLC_STATUS_COMMAND_CANCELLED_FAILURE    = 0x07,
                    809:     LLC_STATUS_ACCESS_DENIED                = 0x08,   // not used in Windows/Nt
                    810:     LLC_STATUS_ADAPTER_NOT_INITIALIZED      = 0x09,   // not used in Windows/Nt
                    811:     LLC_STATUS_CANCELLED_BY_USER            = 0x0A,
                    812:     LLC_STATUS_COMMAND_CANCELLED_CLOSED     = 0x0B,   // not used in Windows/Nt
                    813:     LLC_STATUS_SUCCESS_NOT_OPEN             = 0x0C,
                    814:     LLC_STATUS_TIMER_ERROR                  = 0x11,
                    815:     LLC_STATUS_NO_MEMORY                    = 0x12,
                    816:     LLC_STATUS_INVALID_LOG_ID               = 0x13,   // not used in Windows/Nt
                    817:     LLC_STATUS_LOST_LOG_DATA                = 0x15,
                    818:     LLC_STATUS_BUFFER_SIZE_EXCEEDED         = 0x16,
                    819:     LLC_STATUS_INVALID_BUFFER_LENGTH        = 0x18,
                    820:     LLC_STATUS_INADEQUATE_BUFFERS           = 0x19,
                    821:     LLC_STATUS_USER_LENGTH_TOO_LARGE        = 0x1A,
                    822:     LLC_STATUS_INVALID_PARAMETER_TABLE      = 0x1B,
                    823:     LLC_STATUS_INVALID_POINTER_IN_CCB       = 0x1C,
                    824:     LLC_STATUS_INVALID_ADAPTER              = 0x1D,
                    825:     LLC_STATUS_LOST_DATA_NO_BUFFERS         = 0x20,
                    826:     LLC_STATUS_LOST_DATA_INADEQUATE_SPACE   = 0x21,
                    827:     LLC_STATUS_TRANSMIT_ERROR_FS            = 0x22,
                    828:     LLC_STATUS_TRANSMIT_ERROR               = 0x23,
                    829:     LLC_STATUS_UNAUTHORIZED_MAC             = 0x24,   // not used in Windows/Nt
                    830:     LLC_STATUS_MAX_COMMANDS_EXCEEDED        = 0x25,   // not used in Windows/Nt
                    831:     LLC_STATUS_LINK_NOT_TRANSMITTING        = 0x27,
                    832:     LLC_STATUS_INVALID_FRAME_LENGTH         = 0x28,
                    833:     LLC_STATUS_INADEQUATE_RECEIVE           = 0x30,   // not used in Windows/Nt
                    834:     LLC_STATUS_INVALID_NODE_ADDRESS         = 0x32,
                    835:     LLC_STATUS_INVALID_RCV_BUFFER_LENGTH    = 0x33,
                    836:     LLC_STATUS_INVALID_XMIT_BUFFER_LENGTH   = 0x34,
                    837:     LLC_STATUS_INVALID_STATION_ID           = 0x40,
                    838:     LLC_STATUS_LINK_PROTOCOL_ERROR          = 0x41,
                    839:     LLC_STATUS_PARMETERS_EXCEEDED_MAX       = 0x42,
                    840:     LLC_STATUS_INVALID_SAP_VALUE            = 0x43,
                    841:     LLC_STATUS_INVALID_ROUTING_INFO         = 0x44,
                    842:     LLC_STATUS_RESOURCES_NOT_AVAILABLE      = 0x46,   // not used in Windows/Nt
                    843:     LLC_STATUS_LINK_STATIONS_OPEN           = 0x47,
                    844:     LLC_STATUS_INCOMPATIBLE_COMMANDS        = 0x4A,
                    845:     LLC_STATUS_OUTSTANDING_COMMANDS         = 0x4C,   // not used in Windows/Nt
                    846:     LLC_STATUS_CONNECT_FAILED               = 0x4D,
                    847:     LLC_STATUS_INVALID_REMOTE_ADDRESS       = 0x4F,
                    848:     LLC_STATUS_CCB_POINTER_FIELD            = 0x50,
                    849:     LLC_STATUS_INVALID_APPLICATION_ID       = 0x52,   // not used in Windows/Nt
                    850:     LLC_STATUS_NO_SYSTEM_PROCESS            = 0x56,   // not used in Windows/Nt
                    851:     LLC_STATUS_INADEQUATE_LINKS             = 0x57,
                    852:     LLC_STATUS_INVALID_PARAMETER_1          = 0x58,
                    853:     LLC_STATUS_DIRECT_STATIONS_NOT_ASSIGNED = 0x5C,
                    854:     LLC_STATUS_DEVICE_DRIVER_NOT_INSTALLED  = 0x5d,
                    855:     LLC_STATUS_ADAPTER_NOT_INSTALLED        = 0x5e,
                    856:     LLC_STATUS_CHAINED_DIFFERENT_ADAPTERS   = 0x5f,
                    857:     LLC_STATUS_INIT_COMMAND_STARTED         = 0x60,
                    858:     LLC_STATUS_TOO_MANY_USERS               = 0x61,   // not used in Windows/Nt
                    859:     LLC_STATUS_CANCELLED_BY_SYSTEM_ACTION   = 0x62,
                    860:     LLC_STATUS_DIR_STATIONS_NOT_AVAILABLE   = 0x63,   // not used in Windows/Nt
                    861:     LLC_STATUS_NO_GDT_SELECTORS             = 0x65,
                    862:     LLC_STATUS_MEMORY_LOCK_FAILED           = 0x69,
                    863: 
                    864:     //
                    865:     // New NT DLC specific error codes begin from 0x80
                    866:     // These error codes are for new Windows/Nt DLC apps.
                    867:     //
                    868: 
                    869:     LLC_STATUS_INVALID_BUFFER_ADDRESS       = 0x80,
                    870:     LLC_STATUS_BUFFER_ALREADY_RELEASED      = 0x81,
                    871:     LLC_STATUS_BIND_ERROR                   = 0xA0,   // not used in Windows/Nt
                    872:     LLC_STATUS_INVALID_VERSION              = 0xA1,
                    873:     LLC_STATUS_NT_ERROR_STATUS              = 0xA2,
                    874:     LLC_STATUS_PENDING                      = 0xFF
                    875: } LLC_STATUS;
                    876: 
                    877: #define LLC_STATUS_MAX_ERROR 0xFF
                    878: 
                    879: //
                    880: // ACSLAN_STATUS - status codes which are returned from AcsLan
                    881: //
                    882: 
                    883: typedef enum {
                    884:     ACSLAN_STATUS_COMMAND_ACCEPTED = 0,
                    885:     ACSLAN_STATUS_INVALID_CCB_POINTER = 1,
                    886:     ACSLAN_STATUS_CCB_IN_ERROR = 2,
                    887:     ACSLAN_STATUS_CHAINED_CCB_IN_ERROR = 3,
                    888:     ACSLAN_STATUS_SYSTEM_ERROR = 4,
                    889:     ACSLAN_STATUS_SYSTEM_STATUS = 5,
                    890:     ACSLAN_STATUS_INVALID_COMMAND = 6
                    891: } ACSLAN_STATUS;
                    892: 
                    893: //
                    894: // prototypes
                    895: //
                    896: 
                    897: ACSLAN_STATUS
                    898: APIENTRY
                    899: AcsLan(
                    900:     IN OUT PLLC_CCB pCcb,
                    901:     OUT PLLC_CCB* ppBadCcb
                    902:     );
                    903: 
                    904: #ifdef __cplusplus
                    905: }
                    906: #endif
                    907: 
                    908: #endif // _DLCAPI_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.