Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _DLCAPI_
      7 #define _DLCAPI_
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 #define LLC_DIR_INTERRUPT 0x00
     14 #define LLC_DIR_OPEN_ADAPTER 0x03
     15 #define LLC_DIR_CLOSE_ADAPTER 0x04
     16 #define LLC_DIR_SET_MULTICAST_ADDRESS 0x05
     17 #define LLC_DIR_SET_GROUP_ADDRESS 0x06
     18 #define LLC_DIR_SET_FUNCTIONAL_ADDRESS 0x07
     19 #define LLC_DIR_READ_LOG 0x08
     20 #define LLC_TRANSMIT_FRAMES 0x09
     21 #define LLC_TRANSMIT_DIR_FRAME 0x0A
     22 #define LLC_TRANSMIT_I_FRAME 0x0B
     23 #define LLC_TRANSMIT_UI_FRAME 0x0D
     24 #define LLC_TRANSMIT_XID_CMD 0x0E
     25 #define LLC_TRANSMIT_XID_RESP_FINAL 0x0F
     26 #define LLC_TRANSMIT_XID_RESP_NOT_FINAL 0x10
     27 #define LLC_TRANSMIT_TEST_CMD 0x11
     28 #define LLC_DLC_RESET 0x14
     29 #define LLC_DLC_OPEN_SAP 0x15
     30 #define LLC_DLC_CLOSE_SAP 0x16
     31 #define LLC_DLC_REALLOCATE_STATIONS 0x17
     32 #define LLC_DLC_OPEN_STATION 0x19
     33 #define LLC_DLC_CLOSE_STATION 0x1A
     34 #define LLC_DLC_CONNECT_STATION 0x1B
     35 #define LLC_DLC_MODIFY 0x1C
     36 #define LLC_DLC_FLOW_CONTROL 0x1D
     37 #define LLC_DLC_STATISTICS 0x1E
     38 #define LLC_DIR_INITIALIZE 0x20
     39 #define LLC_DIR_STATUS 0x21
     40 #define LLC_DIR_TIMER_SET 0x22
     41 #define LLC_DIR_TIMER_CANCEL 0x23
     42 #define LLC_BUFFER_GET 0x26
     43 #define LLC_BUFFER_FREE 0x27
     44 #define LLC_RECEIVE 0x28
     45 #define LLC_RECEIVE_CANCEL 0x29
     46 #define LLC_RECEIVE_MODIFY 0x2A
     47 #define LLC_DIR_TIMER_CANCEL_GROUP 0x2C
     48 #define LLC_DIR_SET_EXCEPTION_FLAGS 0x2D
     49 #define LLC_BUFFER_CREATE 0x30
     50 #define LLC_READ 0x31
     51 #define LLC_READ_CANCEL 0x32
     52 #define LLC_DLC_SET_THRESHOLD 0x33
     53 #define LLC_DIR_CLOSE_DIRECT 0x34
     54 #define LLC_DIR_OPEN_DIRECT 0x35
     55 #define LLC_MAX_DLC_COMMAND 0x37
     56 
     57   union _LLC_PARMS;
     58   typedef union _LLC_PARMS LLC_PARMS,*PLLC_PARMS;
     59 
     60   typedef union {
     61     PLLC_PARMS pParameterTable;
     62     struct {
     63       USHORT usStationId;
     64       USHORT usParameter;
     65     } dlc;
     66     struct {
     67       USHORT usParameter0;
     68       USHORT usParameter1;
     69     } dir;
     70     UCHAR auchBuffer[4];
     71     ULONG ulParameter;
     72   } CCB_PARMS;
     73 
     74   typedef struct _LLC_CCB {
     75     UCHAR uchAdapterNumber;
     76     UCHAR uchDlcCommand;
     77     UCHAR uchDlcStatus;
     78     UCHAR uchReserved1;
     79     struct _LLC_CCB *pNext;
     80     ULONG ulCompletionFlag;
     81     CCB_PARMS u;
     82     HANDLE hCompletionEvent;
     83     UCHAR uchReserved2;
     84     UCHAR uchReadFlag;
     85     USHORT usReserved3;
     86   } LLC_CCB,*PLLC_CCB;
     87 
     88   union _LLC_BUFFER;
     89   typedef union _LLC_BUFFER LLC_BUFFER,*PLLC_BUFFER;
     90 
     91   typedef struct {
     92     PLLC_BUFFER pNextBuffer;
     93     USHORT cbFrame;
     94     USHORT cbBuffer;
     95     USHORT offUserData;
     96     USHORT cbUserData;
     97   } LLC_NEXT_BUFFER;
     98 
     99   typedef struct {
    100     PLLC_BUFFER pNextBuffer;
    101     USHORT cbFrame;
    102     USHORT cbBuffer;
    103     USHORT offUserData;
    104     USHORT cbUserData;
    105     USHORT usStationId;
    106     UCHAR uchOptions;
    107     UCHAR uchMsgType;
    108     USHORT cBuffersLeft;
    109     UCHAR uchRcvFS;
    110     UCHAR uchAdapterNumber;
    111     PLLC_BUFFER pNextFrame;
    112     UCHAR cbLanHeader;
    113     UCHAR cbDlcHeader;
    114     UCHAR auchLanHeader[32];
    115     UCHAR auchDlcHeader[4];
    116     USHORT usPadding;
    117   } LLC_NOT_CONTIGUOUS_BUFFER;
    118 
    119   typedef struct {
    120     PLLC_BUFFER pNextBuffer;
    121     USHORT cbFrame;
    122     USHORT cbBuffer;
    123     USHORT offUserData;
    124     USHORT cbUserData;
    125     USHORT usStationId;
    126     UCHAR uchOptions;
    127     UCHAR uchMsgType;
    128     USHORT cBuffersLeft;
    129     UCHAR uchRcvFS;
    130     UCHAR uchAdapterNumber;
    131     PLLC_BUFFER pNextFrame;
    132   } LLC_CONTIGUOUS_BUFFER;
    133 
    134   union _LLC_BUFFER {
    135     PLLC_BUFFER pNext;
    136     LLC_NEXT_BUFFER Next;
    137     struct LlcNextBuffer {
    138       LLC_NEXT_BUFFER Header;
    139       UCHAR auchData[];
    140     } Buffer;
    141     LLC_NOT_CONTIGUOUS_BUFFER NotContiguous;
    142     struct {
    143       LLC_NOT_CONTIGUOUS_BUFFER Header;
    144       UCHAR auchData[];
    145     } NotCont;
    146     LLC_CONTIGUOUS_BUFFER Contiguous;
    147     struct {
    148       LLC_CONTIGUOUS_BUFFER Header;
    149       UCHAR auchData[];
    150     } Cont;
    151   };
    152 
    153   struct _LLC_XMIT_BUFFER;
    154   typedef struct _LLC_XMIT_BUFFER LLC_XMIT_BUFFER,*PLLC_XMIT_BUFFER;
    155 
    156   struct _LLC_XMIT_BUFFER {
    157     PLLC_XMIT_BUFFER pNext;
    158     USHORT usReserved1;
    159     USHORT cbBuffer;
    160     USHORT usReserved2;
    161     USHORT cbUserData;
    162     UCHAR auchData[];
    163   };
    164 
    165 #define LLC_XMIT_BUFFER_SIZE sizeof(LLC_XMIT_BUFFER)
    166 
    167   typedef struct {
    168     HANDLE hBufferPool;
    169     PVOID pBuffer;
    170     ULONG cbBufferSize;
    171     ULONG cbMinimumSizeThreshold;
    172   } LLC_BUFFER_CREATE_PARMS,*PLLC_BUFFER_CREATE_PARMS;
    173 
    174   typedef struct {
    175     USHORT usReserved1;
    176     USHORT cBuffersLeft;
    177     ULONG ulReserved;
    178     PLLC_XMIT_BUFFER pFirstBuffer;
    179   } LLC_BUFFER_FREE_PARMS,*PLLC_BUFFER_FREE_PARMS;
    180 
    181   typedef struct {
    182     USHORT usReserved1;
    183     USHORT cBuffersLeft;
    184     USHORT cBuffersToGet;
    185     USHORT cbBufferSize;
    186     PLLC_XMIT_BUFFER pFirstBuffer;
    187   } LLC_BUFFER_GET_PARMS,*PLLC_BUFFER_GET_PARMS;
    188 
    189   typedef struct {
    190     USHORT usStationId;
    191     USHORT usReserved;
    192     PUCHAR pRoutingInfo;
    193   } LLC_DLC_CONNECT_PARMS,*PLLC_DLC_CONNECT_PARMS;
    194 
    195 #define LLC_RESET_LOCAL_BUSY_USER 0x80
    196 #define LLC_RESET_LOCAL_BUSY_BUFFER 0xC0
    197 #define LLC_SET_LOCAL_BUSY_USER 0
    198 
    199   typedef struct {
    200     USHORT usRes;
    201     USHORT usStationId;
    202     UCHAR uchT1;
    203     UCHAR uchT2;
    204     UCHAR uchTi;
    205     UCHAR uchMaxOut;
    206     UCHAR uchMaxIn;
    207     UCHAR uchMaxOutIncr;
    208     UCHAR uchMaxRetryCnt;
    209     UCHAR uchReserved1;
    210     USHORT usMaxInfoFieldLength;
    211     UCHAR uchAccessPriority;
    212     UCHAR auchReserved3[4];
    213     UCHAR cGroupCount;
    214     PUCHAR pGroupList;
    215   } LLC_DLC_MODIFY_PARMS,*PLLC_DLC_MODIFY_PARMS;
    216 
    217 #define LLC_XID_HANDLING_IN_APPLICATION 0x08
    218 #define LLC_XID_HANDLING_IN_DLC 0
    219 #define LLC_INDIVIDUAL_SAP 0x04
    220 #define LLC_GROUP_SAP 0x02
    221 #define LLC_MEMBER_OF_GROUP_SAP 0x01
    222 
    223   typedef struct {
    224     USHORT usStationId;
    225     USHORT usUserStatValue;
    226     UCHAR uchT1;
    227     UCHAR uchT2;
    228     UCHAR uchTi;
    229     UCHAR uchMaxOut;
    230     UCHAR uchMaxIn;
    231     UCHAR uchMaxOutIncr;
    232     UCHAR uchMaxRetryCnt;
    233     UCHAR uchMaxMembers;
    234     USHORT usMaxI_Field;
    235     UCHAR uchSapValue;
    236     UCHAR uchOptionsPriority;
    237     UCHAR uchcStationCount;
    238     UCHAR uchReserved2[2];
    239     UCHAR cGroupCount;
    240     PUCHAR pGroupList;
    241     ULONG DlcStatusFlags;
    242     UCHAR uchReserved3[8];
    243     UCHAR cLinkStationsAvail;
    244   } LLC_DLC_OPEN_SAP_PARMS,*PLLC_DLC_OPEN_SAP_PARMS;
    245 
    246   typedef struct {
    247     USHORT usSapStationId;
    248     USHORT usLinkStationId;
    249     UCHAR uchT1;
    250     UCHAR uchT2;
    251     UCHAR uchTi;
    252     UCHAR uchMaxOut;
    253     UCHAR uchMaxIn;
    254     UCHAR uchMaxOutIncr;
    255     UCHAR uchMaxRetryCnt;
    256     UCHAR uchRemoteSap;
    257     USHORT usMaxI_Field;
    258     UCHAR uchAccessPriority;
    259     PVOID pRemoteNodeAddress;
    260   } LLC_DLC_OPEN_STATION_PARMS,*PLLC_DLC_OPEN_STATION_PARMS;
    261 
    262 #define LLC_INCREASE_LINK_STATIONS 0
    263 #define LLC_DECREASE_LINK_STATIONS 0x80
    264 
    265   typedef struct {
    266     USHORT usStationId;
    267     UCHAR uchOption;
    268     UCHAR uchStationCount;
    269     UCHAR uchStationsAvailOnAdapter;
    270     UCHAR uchStationsAvailOnSap;
    271     UCHAR uchTotalStationsOnAdapter;
    272     UCHAR uchTotalStationsOnSap;
    273   } LLC_DLC_REALLOCATE_PARMS,*PLLC_DLC_REALLOCATE_PARMS;
    274 
    275   typedef struct {
    276     USHORT usStationId;
    277     USHORT cBufferThreshold;
    278     PVOID AlertEvent;
    279   } LLC_DLC_SET_THRESHOLD_PARMS,*PLLC_DLC_SET_THRESHOLD_PARMS;
    280 
    281   typedef struct {
    282     PVOID TraceBuffer;
    283     ULONG TraceBufferSize;
    284     ULONG TraceFlags;
    285   } LLC_TRACE_INITIALIZE_PARMS,*PLLC_TRACE_INITIALIZE_PARMS;
    286 
    287 #define LLC_DLC_RESET_STATISTICS 0x80
    288 #define LLC_DLC_READ_STATISTICS 0
    289 
    290   typedef struct {
    291     ULONG cTransmittedFrames;
    292     ULONG cReceivedFrames;
    293     ULONG cDiscardedFrames;
    294     ULONG cDataLost;
    295     USHORT cBuffersAvailable;
    296   } DLC_SAP_LOG,*PDLC_SAP_LOG;
    297 
    298   typedef struct {
    299     USHORT cI_FramesTransmitted;
    300     USHORT cI_FramesReceived;
    301     UCHAR cI_FrameReceiveErrors;
    302     UCHAR cI_FrameTransmissionErrors;
    303     USHORT cT1_ExpirationCount;
    304     UCHAR uchLastCmdRespReceived;
    305     UCHAR uchLastCmdRespTransmitted;
    306     UCHAR uchPrimaryState;
    307     UCHAR uchSecondaryState;
    308     UCHAR uchSendStateVariable;
    309     UCHAR uchReceiveStateVariable;
    310     UCHAR uchLastNr;
    311     UCHAR cbLanHeader;
    312     UCHAR auchLanHeader[32];
    313   } DLC_LINK_LOG,*PDLC_LINK_LOG;
    314 
    315   typedef union {
    316     DLC_SAP_LOG Sap;
    317     DLC_LINK_LOG Link;
    318   } LLC_DLC_LOG_BUFFER,*PLLC_DLC_LOG_BUFFER;
    319 
    320   typedef struct {
    321     USHORT usStationId;
    322     USHORT cbLogBufSize;
    323     PLLC_DLC_LOG_BUFFER pLogBuf;
    324     USHORT usActLogLength;
    325     UCHAR uchOptions;
    326   } LLC_DLC_STATISTICS_PARMS,*PLLC_DLC_STATISTICS_PARMS;
    327 
    328   typedef struct {
    329     USHORT usBringUps;
    330     UCHAR Reserved[30];
    331   } LLC_DIR_INITIALIZE_PARMS,*PLLC_DIR_INITIALIZE_PARMS;
    332 
    333   typedef struct {
    334     USHORT usOpenErrorCode;
    335     USHORT usOpenOptions;
    336     UCHAR auchNodeAddress[6];
    337     UCHAR auchGroupAddress[4];
    338     UCHAR auchFunctionalAddress[4];
    339     USHORT usReserved1;
    340     USHORT usReserved2;
    341     USHORT usMaxFrameSize;
    342     USHORT usReserved3[4];
    343     USHORT usBringUps;
    344     USHORT InitWarnings;
    345     USHORT usReserved4[3];
    346   } LLC_ADAPTER_OPEN_PARMS,*PLLC_ADAPTER_OPEN_PARMS;
    347 
    348   typedef struct {
    349     UCHAR uchDlcMaxSaps;
    350     UCHAR uchDlcMaxStations;
    351     UCHAR uchDlcMaxGroupSaps;
    352     UCHAR uchDlcMaxGroupMembers;
    353     UCHAR uchT1_TickOne;
    354     UCHAR uchT2_TickOne;
    355     UCHAR uchTi_TickOne;
    356     UCHAR uchT1_TickTwo;
    357     UCHAR uchT2_TickTwo;
    358     UCHAR uchTi_TickTwo;
    359   } LLC_DLC_PARMS,*PLLC_DLC_PARMS;
    360 
    361   typedef enum {
    362     LLC_ETHERNET_TYPE_DEFAULT,LLC_ETHERNET_TYPE_AUTO,LLC_ETHERNET_TYPE_802_3,LLC_ETHERNET_TYPE_DIX
    363   } LLC_ETHERNET_TYPE,*PLLC_ETHERNET_TYPE;
    364 
    365   typedef struct {
    366     PVOID hBufferPool;
    367     PVOID pSecurityDescriptor;
    368     LLC_ETHERNET_TYPE LlcEthernetType;
    369   } LLC_EXTENDED_ADAPTER_PARMS,*PLLC_EXTENDED_ADAPTER_PARMS;
    370 
    371   typedef struct {
    372     PLLC_ADAPTER_OPEN_PARMS pAdapterParms;
    373     PLLC_EXTENDED_ADAPTER_PARMS pExtendedParms;
    374     PLLC_DLC_PARMS pDlcParms;
    375     PVOID pReserved1;
    376   } LLC_DIR_OPEN_ADAPTER_PARMS,*PLLC_DIR_OPEN_ADAPTER_PARMS;
    377 
    378   typedef struct {
    379     UCHAR auchMulticastAddress[6];
    380   } LLC_DIR_MULTICAST_ADDRESS,*PLLC_DIR_MULTICAST_ADDRESS;
    381 
    382 #define LLC_DIRECT_OPTIONS_ALL_MACS 0x1880
    383 
    384   typedef struct {
    385     USHORT Reserved[4];
    386     USHORT usOpenOptions;
    387     USHORT usEthernetType;
    388     ULONG ulProtocolTypeMask;
    389     ULONG ulProtocolTypeMatch;
    390     USHORT usProtocolTypeOffset;
    391   } LLC_DIR_OPEN_DIRECT_PARMS,*PLLC_DIR_OPEN_DIRECT_PARMS;
    392 
    393   typedef struct {
    394     UCHAR cLineError;
    395     UCHAR cInternalError;
    396     UCHAR cBurstError;
    397     UCHAR cAC_Error;
    398     UCHAR cAbortDelimiter;
    399     UCHAR uchReserved1;
    400     UCHAR cLostFrame;
    401     UCHAR cReceiveCongestion;
    402     UCHAR cFrameCopiedError;
    403     UCHAR cFrequencyError;
    404     UCHAR cTokenError;
    405     UCHAR uchReserved2;
    406     UCHAR uchReserved3;
    407     UCHAR uchReserved4;
    408   } LLC_ADAPTER_LOG_TR,*PLLC_ADAPTER_LOG_TR;
    409 
    410   typedef struct {
    411     UCHAR cCRC_Error;
    412     UCHAR uchReserved1;
    413     UCHAR cAlignmentError;
    414     UCHAR uchReserved2;
    415     UCHAR cTransmitError;
    416     UCHAR uchReserved3;
    417     UCHAR cCollisionError;
    418     UCHAR cReceiveCongestion;
    419     UCHAR uchReserved[6];
    420   } LLC_ADAPTER_LOG_ETH,*PLLC_ADAPTER_LOG_ETH;
    421 
    422   typedef union {
    423     LLC_ADAPTER_LOG_TR Tr;
    424     LLC_ADAPTER_LOG_ETH Eth;
    425   } LLC_ADAPTER_LOG,*PLLC_ADAPTER_LOG;
    426 
    427   typedef struct {
    428     ULONG cTransmittedFrames;
    429     ULONG cReceivedFrames;
    430     ULONG cDiscardedFrames;
    431     ULONG cDataLost;
    432     USHORT cBuffersAvailable;
    433   } LLC_DIRECT_LOG,*PLLC_DIRECT_LOG;
    434 
    435   typedef union {
    436     LLC_ADAPTER_LOG Adapter;
    437     LLC_DIRECT_LOG Dir;
    438     struct {
    439       LLC_ADAPTER_LOG Adapter;
    440       LLC_DIRECT_LOG Dir;
    441     } both;
    442   } LLC_DIR_READ_LOG_BUFFER,*PLLC_DIR_READ_LOG_BUFFER;
    443 
    444 #define LLC_DIR_READ_LOG_ADAPTER 0
    445 #define LLC_DIR_READ_LOG_DIRECT 1
    446 #define LLC_DIR_READ_LOG_BOTH 2
    447 
    448   typedef struct {
    449     USHORT usTypeId;
    450     USHORT cbLogBuffer;
    451     PLLC_DIR_READ_LOG_BUFFER pLogBuffer;
    452     USHORT cbActualLength;
    453   } LLC_DIR_READ_LOG_PARMS,*PLLC_DIR_READ_LOG_PARMS;
    454 
    455   typedef struct {
    456     ULONG ulAdapterCheckFlag;
    457     ULONG ulNetworkStatusFlag;
    458     ULONG ulPcErrorFlag;
    459     ULONG ulSystemActionFlag;
    460   } LLC_DIR_SET_EFLAG_PARMS,*PLLC_DIR_SET_EFLAG_PARMS;
    461 
    462 #define LLC_ADAPTER_ETHERNET 0x0010
    463 #define LLC_ADAPTER_TOKEN_RING 0x0040
    464 
    465   typedef struct {
    466     UCHAR auchPermanentAddress[6];
    467     UCHAR auchNodeAddress[6];
    468     UCHAR auchGroupAddress[4];
    469     UCHAR auchFunctAddr[4];
    470     UCHAR uchMaxSap;
    471     UCHAR uchOpenSaps;
    472     UCHAR uchMaxStations;
    473     UCHAR uchOpenStation;
    474     UCHAR uchAvailStations;
    475     UCHAR uchAdapterConfig;
    476     UCHAR auchReserved1[10];
    477     ULONG ulReserved1;
    478     ULONG ulReserved2;
    479     ULONG ulMaxFrameLength;
    480     USHORT usLastNetworkStatus;
    481     USHORT usAdapterType;
    482   } LLC_DIR_STATUS_PARMS,*PLLC_DIR_STATUS_PARMS;
    483 
    484 #define LLC_OPTION_READ_STATION 0
    485 #define LLC_OPTION_READ_SAP 1
    486 #define LLC_OPTION_READ_ALL 2
    487 
    488 #define LLC_EVENT_SYSTEM_ACTION 0x0040
    489 #define LLC_EVENT_NETWORK_STATUS 0x0020
    490 #define LLC_EVENT_CRITICAL_EXCEPTION 0x0010
    491 #define LLC_EVENT_STATUS_CHANGE 0x0008
    492 #define LLC_EVENT_RECEIVE_DATA 0x0004
    493 #define LLC_EVENT_TRANSMIT_COMPLETION 0x0002
    494 #define LLC_EVENT_COMMAND_COMPLETION 0x0001
    495 #define LLC_READ_ALL_EVENTS 0x007F
    496 
    497 #define LLC_INDICATE_LINK_LOST 0x8000
    498 #define LLC_INDICATE_DM_DISC_RECEIVED 0x4000
    499 #define LLC_INDICATE_FRMR_RECEIVED 0x2000
    500 #define LLC_INDICATE_FRMR_SENT 0x1000
    501 #define LLC_INDICATE_RESET 0x0800
    502 #define LLC_INDICATE_CONNECT_REQUEST 0x0400
    503 #define LLC_INDICATE_REMOTE_BUSY 0x0200
    504 #define LLC_INDICATE_REMOTE_READY 0x0100
    505 #define LLC_INDICATE_TI_TIMER_EXPIRED 0x0080
    506 #define LLC_INDICATE_DLC_COUNTER_OVERFLOW 0x0040
    507 #define LLC_INDICATE_ACCESS_PRTY_LOWERED 0x0020
    508 #define LLC_INDICATE_LOCAL_STATION_BUSY 0x0001
    509 
    510   typedef struct {
    511     USHORT usStationId;
    512     UCHAR uchOptionIndicator;
    513     UCHAR uchEventSet;
    514     UCHAR uchEvent;
    515     UCHAR uchCriticalSubset;
    516     ULONG ulNotificationFlag;
    517     union {
    518       struct {
    519 	USHORT usCcbCount;
    520 	PLLC_CCB pCcbCompletionList;
    521 	USHORT usBufferCount;
    522 	PLLC_BUFFER pFirstBuffer;
    523 	USHORT usReceivedFrameCount;
    524 	PLLC_BUFFER pReceivedFrame;
    525 	USHORT usEventErrorCode;
    526 	USHORT usEventErrorData[3];
    527       } Event;
    528       struct {
    529 	USHORT usStationId;
    530 	USHORT usDlcStatusCode;
    531 	UCHAR uchFrmrData[5];
    532 	UCHAR uchAccessPritority;
    533 	UCHAR uchRemoteNodeAddress[6];
    534 	UCHAR uchRemoteSap;
    535 	UCHAR uchReserved;
    536 	USHORT usUserStatusValue;
    537       } Status;
    538     } Type;
    539   } LLC_READ_PARMS,*PLLC_READ_PARMS;
    540 
    541   typedef struct {
    542     LLC_CCB Ccb;
    543     LLC_READ_PARMS Parms;
    544   } LLC_READ_COMMAND,*PLLC_READ_COMMAND;
    545 
    546 #define LLC_DIR_RCV_ALL_TR_FRAMES 0
    547 #define LLC_DIR_RCV_ALL_MAC_FRAMES 1
    548 #define LLC_DIR_RCV_ALL_8022_FRAMES 2
    549 #define LLC_DIR_RCV_ALL_FRAMES 4
    550 #define LLC_DIR_RCV_ALL_ETHERNET_TYPES 5
    551 
    552 #define LLC_CONTIGUOUS_MAC 0x80
    553 #define LLC_CONTIGUOUS_DATA 0x40
    554 #define LLC_NOT_CONTIGUOUS_DATA 0x00
    555 
    556 #define LLC_RCV_READ_INDIVIDUAL_FRAMES 0
    557 #define LLC_RCV_CHAIN_FRAMES_ON_LINK 1
    558 #define LLC_RCV_CHAIN_FRAMES_ON_SAP 2
    559 
    560   typedef struct {
    561     USHORT usStationId;
    562     USHORT usUserLength;
    563     ULONG ulReceiveFlag;
    564     PLLC_BUFFER pFirstBuffer;
    565     UCHAR uchOptions;
    566     UCHAR auchReserved1[3];
    567     UCHAR uchRcvReadOption;
    568   } LLC_RECEIVE_PARMS,*PLLC_RECEIVE_PARMS;
    569 
    570 #define LLC_CHAIN_XMIT_COMMANDS_ON_LINK 0
    571 #define LLC_COMPLETE_SINGLE_XMIT_FRAME 1
    572 #define LLC_CHAIN_XMIT_COMMANDS_ON_SAP 2
    573 
    574   typedef struct {
    575     USHORT usStationId;
    576     UCHAR uchTransmitFs;
    577     UCHAR uchRemoteSap;
    578     PLLC_XMIT_BUFFER pXmitQueue1;
    579     PLLC_XMIT_BUFFER pXmitQueue2;
    580     USHORT cbBuffer1;
    581     USHORT cbBuffer2;
    582     PVOID pBuffer1;
    583     PVOID pBuffer2;
    584     UCHAR uchXmitReadOption;
    585   } LLC_TRANSMIT_PARMS,*PLLC_TRANSMIT_PARMS;
    586 
    587 #define LLC_FIRST_DATA_SEGMENT 0x01
    588 #define LLC_NEXT_DATA_SEGMENT 0x02
    589 
    590   typedef struct {
    591     UCHAR eSegmentType;
    592     UCHAR boolFreeBuffer;
    593     USHORT cbBuffer;
    594     PVOID pBuffer;
    595   } LLC_TRANSMIT_DESCRIPTOR,*PLLC_TRANSMIT_DESCRIPTOR;
    596 
    597   enum _LLC_FRAME_TYPES {
    598     LLC_DIRECT_TRANSMIT = 0x0000,LLC_DIRECT_MAC = 0x0002,LLC_I_FRAME = 0x0004,LLC_UI_FRAME = 0x0006,LLC_XID_COMMAND_POLL = 0x0008,
    599     LLC_XID_COMMAND_NOT_POLL = 0x000A,LLC_XID_RESPONSE_FINAL = 0x000C,LLC_XID_RESPONSE_NOT_FINAL = 0x000E,LLC_TEST_RESPONSE_FINAL = 0x0010,
    600     LLC_TEST_RESPONSE_NOT_FINAL = 0x0012,LLC_DIRECT_8022 = 0x0014,LLC_TEST_COMMAND_POLL = 0x0016,LLC_DIRECT_ETHERNET_TYPE = 0x0018,
    601     LLC_LAST_FRAME_TYPE = 0x001a,LLC_FIRST_ETHERNET_TYPE = 0x05DD
    602   };
    603 
    604   typedef struct {
    605     LLC_CCB Ccb;
    606     USHORT usStationId;
    607     USHORT usFrameType;
    608     UCHAR uchRemoteSap;
    609     UCHAR uchXmitReadOption;
    610     UCHAR Reserved2[2];
    611     ULONG cXmitBufferCount;
    612     LLC_TRANSMIT_DESCRIPTOR aXmitBuffer[1];
    613   } LLC_TRANSMIT2_COMMAND,*PLLC_TRANSMIT2_COMMAND;
    614 
    615 #define LLC_TRANSMIT2_VAR_PARMS(a) struct { LLC_CCB Ccb; USHORT usStationId; USHORT usFrameType; UCHAR uchRemoteSap; UCHAR uchXmitReadOption; UCHAR uchReserved2[2]; ULONG cXmitBufferCount; LLC_TRANSMIT_DESCRIPTOR XmitBuffer[(a)];}
    616 
    617   union _LLC_PARMS {
    618     LLC_BUFFER_FREE_PARMS BufferFree;
    619     LLC_BUFFER_GET_PARMS BufferGet;
    620     LLC_DLC_CONNECT_PARMS DlcConnectStation;
    621     LLC_DLC_MODIFY_PARMS DlcModify;
    622     LLC_DLC_OPEN_SAP_PARMS DlcOpenSap;
    623     LLC_DLC_OPEN_STATION_PARMS DlcOpenStation;
    624     LLC_DLC_REALLOCATE_PARMS DlcReallocate;
    625     LLC_DLC_SET_THRESHOLD_PARMS DlcSetThreshold;
    626     LLC_DLC_STATISTICS_PARMS DlcStatistics;
    627     LLC_DIR_INITIALIZE_PARMS DirInitialize;
    628     LLC_DIR_OPEN_ADAPTER_PARMS DirOpenAdapter;
    629     LLC_DIR_OPEN_DIRECT_PARMS DirOpenDirect;
    630     LLC_DIR_READ_LOG_PARMS DirReadLog;
    631     LLC_DIR_SET_EFLAG_PARMS DirSetEventFlag;
    632     LLC_DIR_STATUS_PARMS DirStatus;
    633     LLC_READ_PARMS Read;
    634     LLC_RECEIVE_PARMS Receive;
    635     LLC_TRANSMIT_PARMS Transmit;
    636     LLC_TRANSMIT2_COMMAND Transmit2;
    637     LLC_TRACE_INITIALIZE_PARMS TraceInitialize;
    638   };
    639 
    640   typedef enum _LLC_STATUS {
    641     LLC_STATUS_SUCCESS = 0x00,LLC_STATUS_INVALID_COMMAND = 0x01,LLC_STATUS_DUPLICATE_COMMAND = 0x02,LLC_STATUS_ADAPTER_OPEN = 0x03,
    642     LLC_STATUS_ADAPTER_CLOSED = 0x04,LLC_STATUS_PARAMETER_MISSING = 0x05,LLC_STATUS_INVALID_OPTION = 0x06,LLC_STATUS_COMMAND_CANCELLED_FAILURE = 0x07,
    643     LLC_STATUS_ACCESS_DENIED = 0x08,LLC_STATUS_ADAPTER_NOT_INITIALIZED = 0x09,LLC_STATUS_CANCELLED_BY_USER = 0x0A,
    644     LLC_STATUS_COMMAND_CANCELLED_CLOSED = 0x0B,LLC_STATUS_SUCCESS_NOT_OPEN = 0x0C,LLC_STATUS_TIMER_ERROR = 0x11,LLC_STATUS_NO_MEMORY = 0x12,
    645     LLC_STATUS_INVALID_LOG_ID = 0x13,LLC_STATUS_LOST_LOG_DATA = 0x15,LLC_STATUS_BUFFER_SIZE_EXCEEDED = 0x16,LLC_STATUS_INVALID_BUFFER_LENGTH = 0x18,
    646     LLC_STATUS_INADEQUATE_BUFFERS = 0x19,LLC_STATUS_USER_LENGTH_TOO_LARGE = 0x1A,LLC_STATUS_INVALID_PARAMETER_TABLE = 0x1B,
    647     LLC_STATUS_INVALID_POINTER_IN_CCB = 0x1C,LLC_STATUS_INVALID_ADAPTER = 0x1D,LLC_STATUS_LOST_DATA_NO_BUFFERS = 0x20,
    648     LLC_STATUS_LOST_DATA_INADEQUATE_SPACE = 0x21,LLC_STATUS_TRANSMIT_ERROR_FS = 0x22,LLC_STATUS_TRANSMIT_ERROR = 0x23,
    649     LLC_STATUS_UNAUTHORIZED_MAC = 0x24,LLC_STATUS_MAX_COMMANDS_EXCEEDED = 0x25,LLC_STATUS_LINK_NOT_TRANSMITTING = 0x27,
    650     LLC_STATUS_INVALID_FRAME_LENGTH = 0x28,LLC_STATUS_INADEQUATE_RECEIVE = 0x30,LLC_STATUS_INVALID_NODE_ADDRESS = 0x32,
    651     LLC_STATUS_INVALID_RCV_BUFFER_LENGTH = 0x33,LLC_STATUS_INVALID_XMIT_BUFFER_LENGTH = 0x34,LLC_STATUS_INVALID_STATION_ID = 0x40,
    652     LLC_STATUS_LINK_PROTOCOL_ERROR = 0x41,LLC_STATUS_PARMETERS_EXCEEDED_MAX = 0x42,LLC_STATUS_INVALID_SAP_VALUE = 0x43,
    653     LLC_STATUS_INVALID_ROUTING_INFO = 0x44,LLC_STATUS_RESOURCES_NOT_AVAILABLE = 0x46,LLC_STATUS_LINK_STATIONS_OPEN = 0x47,
    654     LLC_STATUS_INCOMPATIBLE_COMMANDS = 0x4A,LLC_STATUS_OUTSTANDING_COMMANDS = 0x4C,LLC_STATUS_CONNECT_FAILED = 0x4D,
    655     LLC_STATUS_INVALID_REMOTE_ADDRESS = 0x4F,LLC_STATUS_CCB_POINTER_FIELD = 0x50,LLC_STATUS_INVALID_APPLICATION_ID = 0x52,
    656     LLC_STATUS_NO_SYSTEM_PROCESS = 0x56,LLC_STATUS_INADEQUATE_LINKS = 0x57,LLC_STATUS_INVALID_PARAMETER_1 = 0x58,
    657     LLC_STATUS_DIRECT_STATIONS_NOT_ASSIGNED = 0x5C,LLC_STATUS_DEVICE_DRIVER_NOT_INSTALLED = 0x5d,LLC_STATUS_ADAPTER_NOT_INSTALLED = 0x5e,
    658     LLC_STATUS_CHAINED_DIFFERENT_ADAPTERS = 0x5f,LLC_STATUS_INIT_COMMAND_STARTED = 0x60,LLC_STATUS_TOO_MANY_USERS = 0x61,
    659     LLC_STATUS_CANCELLED_BY_SYSTEM_ACTION = 0x62,LLC_STATUS_DIR_STATIONS_NOT_AVAILABLE = 0x63,LLC_STATUS_NO_GDT_SELECTORS = 0x65,
    660     LLC_STATUS_MEMORY_LOCK_FAILED = 0x69,LLC_STATUS_INVALID_BUFFER_ADDRESS = 0x80,LLC_STATUS_BUFFER_ALREADY_RELEASED = 0x81,
    661     LLC_STATUS_BIND_ERROR = 0xA0,LLC_STATUS_INVALID_VERSION = 0xA1,LLC_STATUS_NT_ERROR_STATUS = 0xA2,LLC_STATUS_PENDING = 0xFF
    662   } LLC_STATUS;
    663 
    664 #define LLC_STATUS_MAX_ERROR 0xFF
    665 
    666   typedef enum {
    667     ACSLAN_STATUS_COMMAND_ACCEPTED = 0,ACSLAN_STATUS_INVALID_CCB_POINTER = 1,ACSLAN_STATUS_CCB_IN_ERROR = 2,ACSLAN_STATUS_CHAINED_CCB_IN_ERROR = 3,
    668     ACSLAN_STATUS_SYSTEM_ERROR = 4,ACSLAN_STATUS_SYSTEM_STATUS = 5,ACSLAN_STATUS_INVALID_COMMAND = 6
    669   } ACSLAN_STATUS;
    670 
    671   ACSLAN_STATUS WINAPI AcsLan(PLLC_CCB pCcb,PLLC_CCB *ppBadCcb);
    672   LLC_STATUS WINAPI GetAdapterNameFromNumber(UINT AdapterNumber,LPTSTR pNdisName);
    673   LLC_STATUS WINAPI GetAdapterNumberFromName(LPTSTR pNdisName,UINT *AdapterNumber);
    674 
    675 #ifdef __cplusplus
    676 }
    677 #endif
    678 #endif
    679