|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  | #ifndef _DLCAPI_ | 
|  | #define _DLCAPI_ | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #define LLC_DIR_INTERRUPT 0x00 | 
|  | #define LLC_DIR_OPEN_ADAPTER 0x03 | 
|  | #define LLC_DIR_CLOSE_ADAPTER 0x04 | 
|  | #define LLC_DIR_SET_MULTICAST_ADDRESS 0x05 | 
|  | #define LLC_DIR_SET_GROUP_ADDRESS 0x06 | 
|  | #define LLC_DIR_SET_FUNCTIONAL_ADDRESS 0x07 | 
|  | #define LLC_DIR_READ_LOG 0x08 | 
|  | #define LLC_TRANSMIT_FRAMES 0x09 | 
|  | #define LLC_TRANSMIT_DIR_FRAME 0x0A | 
|  | #define LLC_TRANSMIT_I_FRAME 0x0B | 
|  | #define LLC_TRANSMIT_UI_FRAME 0x0D | 
|  | #define LLC_TRANSMIT_XID_CMD 0x0E | 
|  | #define LLC_TRANSMIT_XID_RESP_FINAL 0x0F | 
|  | #define LLC_TRANSMIT_XID_RESP_NOT_FINAL 0x10 | 
|  | #define LLC_TRANSMIT_TEST_CMD 0x11 | 
|  | #define LLC_DLC_RESET 0x14 | 
|  | #define LLC_DLC_OPEN_SAP 0x15 | 
|  | #define LLC_DLC_CLOSE_SAP 0x16 | 
|  | #define LLC_DLC_REALLOCATE_STATIONS 0x17 | 
|  | #define LLC_DLC_OPEN_STATION 0x19 | 
|  | #define LLC_DLC_CLOSE_STATION 0x1A | 
|  | #define LLC_DLC_CONNECT_STATION 0x1B | 
|  | #define LLC_DLC_MODIFY 0x1C | 
|  | #define LLC_DLC_FLOW_CONTROL 0x1D | 
|  | #define LLC_DLC_STATISTICS 0x1E | 
|  | #define LLC_DIR_INITIALIZE 0x20 | 
|  | #define LLC_DIR_STATUS 0x21 | 
|  | #define LLC_DIR_TIMER_SET 0x22 | 
|  | #define LLC_DIR_TIMER_CANCEL 0x23 | 
|  | #define LLC_BUFFER_GET 0x26 | 
|  | #define LLC_BUFFER_FREE 0x27 | 
|  | #define LLC_RECEIVE 0x28 | 
|  | #define LLC_RECEIVE_CANCEL 0x29 | 
|  | #define LLC_RECEIVE_MODIFY 0x2A | 
|  | #define LLC_DIR_TIMER_CANCEL_GROUP 0x2C | 
|  | #define LLC_DIR_SET_EXCEPTION_FLAGS 0x2D | 
|  | #define LLC_BUFFER_CREATE 0x30 | 
|  | #define LLC_READ 0x31 | 
|  | #define LLC_READ_CANCEL 0x32 | 
|  | #define LLC_DLC_SET_THRESHOLD 0x33 | 
|  | #define LLC_DIR_CLOSE_DIRECT 0x34 | 
|  | #define LLC_DIR_OPEN_DIRECT 0x35 | 
|  | #define LLC_MAX_DLC_COMMAND 0x37 | 
|  |  | 
|  | union _LLC_PARMS; | 
|  | typedef union _LLC_PARMS LLC_PARMS,*PLLC_PARMS; | 
|  |  | 
|  | typedef union { | 
|  | PLLC_PARMS pParameterTable; | 
|  | struct { | 
|  | USHORT usStationId; | 
|  | USHORT usParameter; | 
|  | } dlc; | 
|  | struct { | 
|  | USHORT usParameter0; | 
|  | USHORT usParameter1; | 
|  | } dir; | 
|  | UCHAR auchBuffer[4]; | 
|  | ULONG ulParameter; | 
|  | } CCB_PARMS; | 
|  |  | 
|  | typedef struct _LLC_CCB { | 
|  | UCHAR uchAdapterNumber; | 
|  | UCHAR uchDlcCommand; | 
|  | UCHAR uchDlcStatus; | 
|  | UCHAR uchReserved1; | 
|  | struct _LLC_CCB *pNext; | 
|  | ULONG ulCompletionFlag; | 
|  | CCB_PARMS u; | 
|  | HANDLE hCompletionEvent; | 
|  | UCHAR uchReserved2; | 
|  | UCHAR uchReadFlag; | 
|  | USHORT usReserved3; | 
|  | } LLC_CCB,*PLLC_CCB; | 
|  |  | 
|  | union _LLC_BUFFER; | 
|  | typedef union _LLC_BUFFER LLC_BUFFER,*PLLC_BUFFER; | 
|  |  | 
|  | typedef struct { | 
|  | PLLC_BUFFER pNextBuffer; | 
|  | USHORT cbFrame; | 
|  | USHORT cbBuffer; | 
|  | USHORT offUserData; | 
|  | USHORT cbUserData; | 
|  | } LLC_NEXT_BUFFER; | 
|  |  | 
|  | typedef struct { | 
|  | PLLC_BUFFER pNextBuffer; | 
|  | USHORT cbFrame; | 
|  | USHORT cbBuffer; | 
|  | USHORT offUserData; | 
|  | USHORT cbUserData; | 
|  | USHORT usStationId; | 
|  | UCHAR uchOptions; | 
|  | UCHAR uchMsgType; | 
|  | USHORT cBuffersLeft; | 
|  | UCHAR uchRcvFS; | 
|  | UCHAR uchAdapterNumber; | 
|  | PLLC_BUFFER pNextFrame; | 
|  | UCHAR cbLanHeader; | 
|  | UCHAR cbDlcHeader; | 
|  | UCHAR auchLanHeader[32]; | 
|  | UCHAR auchDlcHeader[4]; | 
|  | USHORT usPadding; | 
|  | } LLC_NOT_CONTIGUOUS_BUFFER; | 
|  |  | 
|  | typedef struct { | 
|  | PLLC_BUFFER pNextBuffer; | 
|  | USHORT cbFrame; | 
|  | USHORT cbBuffer; | 
|  | USHORT offUserData; | 
|  | USHORT cbUserData; | 
|  | USHORT usStationId; | 
|  | UCHAR uchOptions; | 
|  | UCHAR uchMsgType; | 
|  | USHORT cBuffersLeft; | 
|  | UCHAR uchRcvFS; | 
|  | UCHAR uchAdapterNumber; | 
|  | PLLC_BUFFER pNextFrame; | 
|  | } LLC_CONTIGUOUS_BUFFER; | 
|  |  | 
|  | union _LLC_BUFFER { | 
|  | PLLC_BUFFER pNext; | 
|  | LLC_NEXT_BUFFER Next; | 
|  | struct LlcNextBuffer { | 
|  | LLC_NEXT_BUFFER Header; | 
|  | UCHAR auchData[]; | 
|  | } Buffer; | 
|  | LLC_NOT_CONTIGUOUS_BUFFER NotContiguous; | 
|  | struct { | 
|  | LLC_NOT_CONTIGUOUS_BUFFER Header; | 
|  | UCHAR auchData[]; | 
|  | } NotCont; | 
|  | LLC_CONTIGUOUS_BUFFER Contiguous; | 
|  | struct { | 
|  | LLC_CONTIGUOUS_BUFFER Header; | 
|  | UCHAR auchData[]; | 
|  | } Cont; | 
|  | }; | 
|  |  | 
|  | struct _LLC_XMIT_BUFFER; | 
|  | typedef struct _LLC_XMIT_BUFFER LLC_XMIT_BUFFER,*PLLC_XMIT_BUFFER; | 
|  |  | 
|  | struct _LLC_XMIT_BUFFER { | 
|  | PLLC_XMIT_BUFFER pNext; | 
|  | USHORT usReserved1; | 
|  | USHORT cbBuffer; | 
|  | USHORT usReserved2; | 
|  | USHORT cbUserData; | 
|  | UCHAR auchData[]; | 
|  | }; | 
|  |  | 
|  | #define LLC_XMIT_BUFFER_SIZE sizeof(LLC_XMIT_BUFFER) | 
|  |  | 
|  | typedef struct { | 
|  | HANDLE hBufferPool; | 
|  | PVOID pBuffer; | 
|  | ULONG cbBufferSize; | 
|  | ULONG cbMinimumSizeThreshold; | 
|  | } LLC_BUFFER_CREATE_PARMS,*PLLC_BUFFER_CREATE_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usReserved1; | 
|  | USHORT cBuffersLeft; | 
|  | ULONG ulReserved; | 
|  | PLLC_XMIT_BUFFER pFirstBuffer; | 
|  | } LLC_BUFFER_FREE_PARMS,*PLLC_BUFFER_FREE_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usReserved1; | 
|  | USHORT cBuffersLeft; | 
|  | USHORT cBuffersToGet; | 
|  | USHORT cbBufferSize; | 
|  | PLLC_XMIT_BUFFER pFirstBuffer; | 
|  | } LLC_BUFFER_GET_PARMS,*PLLC_BUFFER_GET_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | USHORT usReserved; | 
|  | PUCHAR pRoutingInfo; | 
|  | } LLC_DLC_CONNECT_PARMS,*PLLC_DLC_CONNECT_PARMS; | 
|  |  | 
|  | #define LLC_RESET_LOCAL_BUSY_USER 0x80 | 
|  | #define LLC_RESET_LOCAL_BUSY_BUFFER 0xC0 | 
|  | #define LLC_SET_LOCAL_BUSY_USER 0 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usRes; | 
|  | USHORT usStationId; | 
|  | UCHAR uchT1; | 
|  | UCHAR uchT2; | 
|  | UCHAR uchTi; | 
|  | UCHAR uchMaxOut; | 
|  | UCHAR uchMaxIn; | 
|  | UCHAR uchMaxOutIncr; | 
|  | UCHAR uchMaxRetryCnt; | 
|  | UCHAR uchReserved1; | 
|  | USHORT usMaxInfoFieldLength; | 
|  | UCHAR uchAccessPriority; | 
|  | UCHAR auchReserved3[4]; | 
|  | UCHAR cGroupCount; | 
|  | PUCHAR pGroupList; | 
|  | } LLC_DLC_MODIFY_PARMS,*PLLC_DLC_MODIFY_PARMS; | 
|  |  | 
|  | #define LLC_XID_HANDLING_IN_APPLICATION 0x08 | 
|  | #define LLC_XID_HANDLING_IN_DLC 0 | 
|  | #define LLC_INDIVIDUAL_SAP 0x04 | 
|  | #define LLC_GROUP_SAP 0x02 | 
|  | #define LLC_MEMBER_OF_GROUP_SAP 0x01 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | USHORT usUserStatValue; | 
|  | UCHAR uchT1; | 
|  | UCHAR uchT2; | 
|  | UCHAR uchTi; | 
|  | UCHAR uchMaxOut; | 
|  | UCHAR uchMaxIn; | 
|  | UCHAR uchMaxOutIncr; | 
|  | UCHAR uchMaxRetryCnt; | 
|  | UCHAR uchMaxMembers; | 
|  | USHORT usMaxI_Field; | 
|  | UCHAR uchSapValue; | 
|  | UCHAR uchOptionsPriority; | 
|  | UCHAR uchcStationCount; | 
|  | UCHAR uchReserved2[2]; | 
|  | UCHAR cGroupCount; | 
|  | PUCHAR pGroupList; | 
|  | ULONG DlcStatusFlags; | 
|  | UCHAR uchReserved3[8]; | 
|  | UCHAR cLinkStationsAvail; | 
|  | } LLC_DLC_OPEN_SAP_PARMS,*PLLC_DLC_OPEN_SAP_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usSapStationId; | 
|  | USHORT usLinkStationId; | 
|  | UCHAR uchT1; | 
|  | UCHAR uchT2; | 
|  | UCHAR uchTi; | 
|  | UCHAR uchMaxOut; | 
|  | UCHAR uchMaxIn; | 
|  | UCHAR uchMaxOutIncr; | 
|  | UCHAR uchMaxRetryCnt; | 
|  | UCHAR uchRemoteSap; | 
|  | USHORT usMaxI_Field; | 
|  | UCHAR uchAccessPriority; | 
|  | PVOID pRemoteNodeAddress; | 
|  | } LLC_DLC_OPEN_STATION_PARMS,*PLLC_DLC_OPEN_STATION_PARMS; | 
|  |  | 
|  | #define LLC_INCREASE_LINK_STATIONS 0 | 
|  | #define LLC_DECREASE_LINK_STATIONS 0x80 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | UCHAR uchOption; | 
|  | UCHAR uchStationCount; | 
|  | UCHAR uchStationsAvailOnAdapter; | 
|  | UCHAR uchStationsAvailOnSap; | 
|  | UCHAR uchTotalStationsOnAdapter; | 
|  | UCHAR uchTotalStationsOnSap; | 
|  | } LLC_DLC_REALLOCATE_PARMS,*PLLC_DLC_REALLOCATE_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | USHORT cBufferThreshold; | 
|  | PVOID AlertEvent; | 
|  | } LLC_DLC_SET_THRESHOLD_PARMS,*PLLC_DLC_SET_THRESHOLD_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | PVOID TraceBuffer; | 
|  | ULONG TraceBufferSize; | 
|  | ULONG TraceFlags; | 
|  | } LLC_TRACE_INITIALIZE_PARMS,*PLLC_TRACE_INITIALIZE_PARMS; | 
|  |  | 
|  | #define LLC_DLC_RESET_STATISTICS 0x80 | 
|  | #define LLC_DLC_READ_STATISTICS 0 | 
|  |  | 
|  | typedef struct { | 
|  | ULONG cTransmittedFrames; | 
|  | ULONG cReceivedFrames; | 
|  | ULONG cDiscardedFrames; | 
|  | ULONG cDataLost; | 
|  | USHORT cBuffersAvailable; | 
|  | } DLC_SAP_LOG,*PDLC_SAP_LOG; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT cI_FramesTransmitted; | 
|  | USHORT cI_FramesReceived; | 
|  | UCHAR cI_FrameReceiveErrors; | 
|  | UCHAR cI_FrameTransmissionErrors; | 
|  | USHORT cT1_ExpirationCount; | 
|  | UCHAR uchLastCmdRespReceived; | 
|  | UCHAR uchLastCmdRespTransmitted; | 
|  | UCHAR uchPrimaryState; | 
|  | UCHAR uchSecondaryState; | 
|  | UCHAR uchSendStateVariable; | 
|  | UCHAR uchReceiveStateVariable; | 
|  | UCHAR uchLastNr; | 
|  | UCHAR cbLanHeader; | 
|  | UCHAR auchLanHeader[32]; | 
|  | } DLC_LINK_LOG,*PDLC_LINK_LOG; | 
|  |  | 
|  | typedef union { | 
|  | DLC_SAP_LOG Sap; | 
|  | DLC_LINK_LOG Link; | 
|  | } LLC_DLC_LOG_BUFFER,*PLLC_DLC_LOG_BUFFER; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | USHORT cbLogBufSize; | 
|  | PLLC_DLC_LOG_BUFFER pLogBuf; | 
|  | USHORT usActLogLength; | 
|  | UCHAR uchOptions; | 
|  | } LLC_DLC_STATISTICS_PARMS,*PLLC_DLC_STATISTICS_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usBringUps; | 
|  | UCHAR Reserved[30]; | 
|  | } LLC_DIR_INITIALIZE_PARMS,*PLLC_DIR_INITIALIZE_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usOpenErrorCode; | 
|  | USHORT usOpenOptions; | 
|  | UCHAR auchNodeAddress[6]; | 
|  | UCHAR auchGroupAddress[4]; | 
|  | UCHAR auchFunctionalAddress[4]; | 
|  | USHORT usReserved1; | 
|  | USHORT usReserved2; | 
|  | USHORT usMaxFrameSize; | 
|  | USHORT usReserved3[4]; | 
|  | USHORT usBringUps; | 
|  | USHORT InitWarnings; | 
|  | USHORT usReserved4[3]; | 
|  | } LLC_ADAPTER_OPEN_PARMS,*PLLC_ADAPTER_OPEN_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | UCHAR uchDlcMaxSaps; | 
|  | UCHAR uchDlcMaxStations; | 
|  | UCHAR uchDlcMaxGroupSaps; | 
|  | UCHAR uchDlcMaxGroupMembers; | 
|  | UCHAR uchT1_TickOne; | 
|  | UCHAR uchT2_TickOne; | 
|  | UCHAR uchTi_TickOne; | 
|  | UCHAR uchT1_TickTwo; | 
|  | UCHAR uchT2_TickTwo; | 
|  | UCHAR uchTi_TickTwo; | 
|  | } LLC_DLC_PARMS,*PLLC_DLC_PARMS; | 
|  |  | 
|  | typedef enum { | 
|  | LLC_ETHERNET_TYPE_DEFAULT,LLC_ETHERNET_TYPE_AUTO,LLC_ETHERNET_TYPE_802_3,LLC_ETHERNET_TYPE_DIX | 
|  | } LLC_ETHERNET_TYPE,*PLLC_ETHERNET_TYPE; | 
|  |  | 
|  | typedef struct { | 
|  | PVOID hBufferPool; | 
|  | PVOID pSecurityDescriptor; | 
|  | LLC_ETHERNET_TYPE LlcEthernetType; | 
|  | } LLC_EXTENDED_ADAPTER_PARMS,*PLLC_EXTENDED_ADAPTER_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | PLLC_ADAPTER_OPEN_PARMS pAdapterParms; | 
|  | PLLC_EXTENDED_ADAPTER_PARMS pExtendedParms; | 
|  | PLLC_DLC_PARMS pDlcParms; | 
|  | PVOID pReserved1; | 
|  | } LLC_DIR_OPEN_ADAPTER_PARMS,*PLLC_DIR_OPEN_ADAPTER_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | UCHAR auchMulticastAddress[6]; | 
|  | } LLC_DIR_MULTICAST_ADDRESS,*PLLC_DIR_MULTICAST_ADDRESS; | 
|  |  | 
|  | #define LLC_DIRECT_OPTIONS_ALL_MACS 0x1880 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT Reserved[4]; | 
|  | USHORT usOpenOptions; | 
|  | USHORT usEthernetType; | 
|  | ULONG ulProtocolTypeMask; | 
|  | ULONG ulProtocolTypeMatch; | 
|  | USHORT usProtocolTypeOffset; | 
|  | } LLC_DIR_OPEN_DIRECT_PARMS,*PLLC_DIR_OPEN_DIRECT_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | UCHAR cLineError; | 
|  | UCHAR cInternalError; | 
|  | UCHAR cBurstError; | 
|  | UCHAR cAC_Error; | 
|  | UCHAR cAbortDelimiter; | 
|  | UCHAR uchReserved1; | 
|  | UCHAR cLostFrame; | 
|  | UCHAR cReceiveCongestion; | 
|  | UCHAR cFrameCopiedError; | 
|  | UCHAR cFrequencyError; | 
|  | UCHAR cTokenError; | 
|  | UCHAR uchReserved2; | 
|  | UCHAR uchReserved3; | 
|  | UCHAR uchReserved4; | 
|  | } LLC_ADAPTER_LOG_TR,*PLLC_ADAPTER_LOG_TR; | 
|  |  | 
|  | typedef struct { | 
|  | UCHAR cCRC_Error; | 
|  | UCHAR uchReserved1; | 
|  | UCHAR cAlignmentError; | 
|  | UCHAR uchReserved2; | 
|  | UCHAR cTransmitError; | 
|  | UCHAR uchReserved3; | 
|  | UCHAR cCollisionError; | 
|  | UCHAR cReceiveCongestion; | 
|  | UCHAR uchReserved[6]; | 
|  | } LLC_ADAPTER_LOG_ETH,*PLLC_ADAPTER_LOG_ETH; | 
|  |  | 
|  | typedef union { | 
|  | LLC_ADAPTER_LOG_TR Tr; | 
|  | LLC_ADAPTER_LOG_ETH Eth; | 
|  | } LLC_ADAPTER_LOG,*PLLC_ADAPTER_LOG; | 
|  |  | 
|  | typedef struct { | 
|  | ULONG cTransmittedFrames; | 
|  | ULONG cReceivedFrames; | 
|  | ULONG cDiscardedFrames; | 
|  | ULONG cDataLost; | 
|  | USHORT cBuffersAvailable; | 
|  | } LLC_DIRECT_LOG,*PLLC_DIRECT_LOG; | 
|  |  | 
|  | typedef union { | 
|  | LLC_ADAPTER_LOG Adapter; | 
|  | LLC_DIRECT_LOG Dir; | 
|  | struct { | 
|  | LLC_ADAPTER_LOG Adapter; | 
|  | LLC_DIRECT_LOG Dir; | 
|  | } both; | 
|  | } LLC_DIR_READ_LOG_BUFFER,*PLLC_DIR_READ_LOG_BUFFER; | 
|  |  | 
|  | #define LLC_DIR_READ_LOG_ADAPTER 0 | 
|  | #define LLC_DIR_READ_LOG_DIRECT 1 | 
|  | #define LLC_DIR_READ_LOG_BOTH 2 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usTypeId; | 
|  | USHORT cbLogBuffer; | 
|  | PLLC_DIR_READ_LOG_BUFFER pLogBuffer; | 
|  | USHORT cbActualLength; | 
|  | } LLC_DIR_READ_LOG_PARMS,*PLLC_DIR_READ_LOG_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | ULONG ulAdapterCheckFlag; | 
|  | ULONG ulNetworkStatusFlag; | 
|  | ULONG ulPcErrorFlag; | 
|  | ULONG ulSystemActionFlag; | 
|  | } LLC_DIR_SET_EFLAG_PARMS,*PLLC_DIR_SET_EFLAG_PARMS; | 
|  |  | 
|  | #define LLC_ADAPTER_ETHERNET 0x0010 | 
|  | #define LLC_ADAPTER_TOKEN_RING 0x0040 | 
|  |  | 
|  | typedef struct { | 
|  | UCHAR auchPermanentAddress[6]; | 
|  | UCHAR auchNodeAddress[6]; | 
|  | UCHAR auchGroupAddress[4]; | 
|  | UCHAR auchFunctAddr[4]; | 
|  | UCHAR uchMaxSap; | 
|  | UCHAR uchOpenSaps; | 
|  | UCHAR uchMaxStations; | 
|  | UCHAR uchOpenStation; | 
|  | UCHAR uchAvailStations; | 
|  | UCHAR uchAdapterConfig; | 
|  | UCHAR auchReserved1[10]; | 
|  | ULONG ulReserved1; | 
|  | ULONG ulReserved2; | 
|  | ULONG ulMaxFrameLength; | 
|  | USHORT usLastNetworkStatus; | 
|  | USHORT usAdapterType; | 
|  | } LLC_DIR_STATUS_PARMS,*PLLC_DIR_STATUS_PARMS; | 
|  |  | 
|  | #define LLC_OPTION_READ_STATION 0 | 
|  | #define LLC_OPTION_READ_SAP 1 | 
|  | #define LLC_OPTION_READ_ALL 2 | 
|  |  | 
|  | #define LLC_EVENT_SYSTEM_ACTION 0x0040 | 
|  | #define LLC_EVENT_NETWORK_STATUS 0x0020 | 
|  | #define LLC_EVENT_CRITICAL_EXCEPTION 0x0010 | 
|  | #define LLC_EVENT_STATUS_CHANGE 0x0008 | 
|  | #define LLC_EVENT_RECEIVE_DATA 0x0004 | 
|  | #define LLC_EVENT_TRANSMIT_COMPLETION 0x0002 | 
|  | #define LLC_EVENT_COMMAND_COMPLETION 0x0001 | 
|  | #define LLC_READ_ALL_EVENTS 0x007F | 
|  |  | 
|  | #define LLC_INDICATE_LINK_LOST 0x8000 | 
|  | #define LLC_INDICATE_DM_DISC_RECEIVED 0x4000 | 
|  | #define LLC_INDICATE_FRMR_RECEIVED 0x2000 | 
|  | #define LLC_INDICATE_FRMR_SENT 0x1000 | 
|  | #define LLC_INDICATE_RESET 0x0800 | 
|  | #define LLC_INDICATE_CONNECT_REQUEST 0x0400 | 
|  | #define LLC_INDICATE_REMOTE_BUSY 0x0200 | 
|  | #define LLC_INDICATE_REMOTE_READY 0x0100 | 
|  | #define LLC_INDICATE_TI_TIMER_EXPIRED 0x0080 | 
|  | #define LLC_INDICATE_DLC_COUNTER_OVERFLOW 0x0040 | 
|  | #define LLC_INDICATE_ACCESS_PRTY_LOWERED 0x0020 | 
|  | #define LLC_INDICATE_LOCAL_STATION_BUSY 0x0001 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | UCHAR uchOptionIndicator; | 
|  | UCHAR uchEventSet; | 
|  | UCHAR uchEvent; | 
|  | UCHAR uchCriticalSubset; | 
|  | ULONG ulNotificationFlag; | 
|  | union { | 
|  | struct { | 
|  | USHORT usCcbCount; | 
|  | PLLC_CCB pCcbCompletionList; | 
|  | USHORT usBufferCount; | 
|  | PLLC_BUFFER pFirstBuffer; | 
|  | USHORT usReceivedFrameCount; | 
|  | PLLC_BUFFER pReceivedFrame; | 
|  | USHORT usEventErrorCode; | 
|  | USHORT usEventErrorData[3]; | 
|  | } Event; | 
|  | struct { | 
|  | USHORT usStationId; | 
|  | USHORT usDlcStatusCode; | 
|  | UCHAR uchFrmrData[5]; | 
|  | UCHAR uchAccessPritority; | 
|  | UCHAR uchRemoteNodeAddress[6]; | 
|  | UCHAR uchRemoteSap; | 
|  | UCHAR uchReserved; | 
|  | USHORT usUserStatusValue; | 
|  | } Status; | 
|  | } Type; | 
|  | } LLC_READ_PARMS,*PLLC_READ_PARMS; | 
|  |  | 
|  | typedef struct { | 
|  | LLC_CCB Ccb; | 
|  | LLC_READ_PARMS Parms; | 
|  | } LLC_READ_COMMAND,*PLLC_READ_COMMAND; | 
|  |  | 
|  | #define LLC_DIR_RCV_ALL_TR_FRAMES 0 | 
|  | #define LLC_DIR_RCV_ALL_MAC_FRAMES 1 | 
|  | #define LLC_DIR_RCV_ALL_8022_FRAMES 2 | 
|  | #define LLC_DIR_RCV_ALL_FRAMES 4 | 
|  | #define LLC_DIR_RCV_ALL_ETHERNET_TYPES 5 | 
|  |  | 
|  | #define LLC_CONTIGUOUS_MAC 0x80 | 
|  | #define LLC_CONTIGUOUS_DATA 0x40 | 
|  | #define LLC_NOT_CONTIGUOUS_DATA 0x00 | 
|  |  | 
|  | #define LLC_RCV_READ_INDIVIDUAL_FRAMES 0 | 
|  | #define LLC_RCV_CHAIN_FRAMES_ON_LINK 1 | 
|  | #define LLC_RCV_CHAIN_FRAMES_ON_SAP 2 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | USHORT usUserLength; | 
|  | ULONG ulReceiveFlag; | 
|  | PLLC_BUFFER pFirstBuffer; | 
|  | UCHAR uchOptions; | 
|  | UCHAR auchReserved1[3]; | 
|  | UCHAR uchRcvReadOption; | 
|  | } LLC_RECEIVE_PARMS,*PLLC_RECEIVE_PARMS; | 
|  |  | 
|  | #define LLC_CHAIN_XMIT_COMMANDS_ON_LINK 0 | 
|  | #define LLC_COMPLETE_SINGLE_XMIT_FRAME 1 | 
|  | #define LLC_CHAIN_XMIT_COMMANDS_ON_SAP 2 | 
|  |  | 
|  | typedef struct { | 
|  | USHORT usStationId; | 
|  | UCHAR uchTransmitFs; | 
|  | UCHAR uchRemoteSap; | 
|  | PLLC_XMIT_BUFFER pXmitQueue1; | 
|  | PLLC_XMIT_BUFFER pXmitQueue2; | 
|  | USHORT cbBuffer1; | 
|  | USHORT cbBuffer2; | 
|  | PVOID pBuffer1; | 
|  | PVOID pBuffer2; | 
|  | UCHAR uchXmitReadOption; | 
|  | } LLC_TRANSMIT_PARMS,*PLLC_TRANSMIT_PARMS; | 
|  |  | 
|  | #define LLC_FIRST_DATA_SEGMENT 0x01 | 
|  | #define LLC_NEXT_DATA_SEGMENT 0x02 | 
|  |  | 
|  | typedef struct { | 
|  | UCHAR eSegmentType; | 
|  | UCHAR boolFreeBuffer; | 
|  | USHORT cbBuffer; | 
|  | PVOID pBuffer; | 
|  | } LLC_TRANSMIT_DESCRIPTOR,*PLLC_TRANSMIT_DESCRIPTOR; | 
|  |  | 
|  | enum _LLC_FRAME_TYPES { | 
|  | LLC_DIRECT_TRANSMIT = 0x0000,LLC_DIRECT_MAC = 0x0002,LLC_I_FRAME = 0x0004,LLC_UI_FRAME = 0x0006,LLC_XID_COMMAND_POLL = 0x0008, | 
|  | LLC_XID_COMMAND_NOT_POLL = 0x000A,LLC_XID_RESPONSE_FINAL = 0x000C,LLC_XID_RESPONSE_NOT_FINAL = 0x000E,LLC_TEST_RESPONSE_FINAL = 0x0010, | 
|  | LLC_TEST_RESPONSE_NOT_FINAL = 0x0012,LLC_DIRECT_8022 = 0x0014,LLC_TEST_COMMAND_POLL = 0x0016,LLC_DIRECT_ETHERNET_TYPE = 0x0018, | 
|  | LLC_LAST_FRAME_TYPE = 0x001a,LLC_FIRST_ETHERNET_TYPE = 0x05DD | 
|  | }; | 
|  |  | 
|  | typedef struct { | 
|  | LLC_CCB Ccb; | 
|  | USHORT usStationId; | 
|  | USHORT usFrameType; | 
|  | UCHAR uchRemoteSap; | 
|  | UCHAR uchXmitReadOption; | 
|  | UCHAR Reserved2[2]; | 
|  | ULONG cXmitBufferCount; | 
|  | LLC_TRANSMIT_DESCRIPTOR aXmitBuffer[1]; | 
|  | } LLC_TRANSMIT2_COMMAND,*PLLC_TRANSMIT2_COMMAND; | 
|  |  | 
|  | #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)];} | 
|  |  | 
|  | union _LLC_PARMS { | 
|  | LLC_BUFFER_FREE_PARMS BufferFree; | 
|  | LLC_BUFFER_GET_PARMS BufferGet; | 
|  | LLC_DLC_CONNECT_PARMS DlcConnectStation; | 
|  | LLC_DLC_MODIFY_PARMS DlcModify; | 
|  | LLC_DLC_OPEN_SAP_PARMS DlcOpenSap; | 
|  | LLC_DLC_OPEN_STATION_PARMS DlcOpenStation; | 
|  | LLC_DLC_REALLOCATE_PARMS DlcReallocate; | 
|  | LLC_DLC_SET_THRESHOLD_PARMS DlcSetThreshold; | 
|  | LLC_DLC_STATISTICS_PARMS DlcStatistics; | 
|  | LLC_DIR_INITIALIZE_PARMS DirInitialize; | 
|  | LLC_DIR_OPEN_ADAPTER_PARMS DirOpenAdapter; | 
|  | LLC_DIR_OPEN_DIRECT_PARMS DirOpenDirect; | 
|  | LLC_DIR_READ_LOG_PARMS DirReadLog; | 
|  | LLC_DIR_SET_EFLAG_PARMS DirSetEventFlag; | 
|  | LLC_DIR_STATUS_PARMS DirStatus; | 
|  | LLC_READ_PARMS Read; | 
|  | LLC_RECEIVE_PARMS Receive; | 
|  | LLC_TRANSMIT_PARMS Transmit; | 
|  | LLC_TRANSMIT2_COMMAND Transmit2; | 
|  | LLC_TRACE_INITIALIZE_PARMS TraceInitialize; | 
|  | }; | 
|  |  | 
|  | typedef enum _LLC_STATUS { | 
|  | LLC_STATUS_SUCCESS = 0x00,LLC_STATUS_INVALID_COMMAND = 0x01,LLC_STATUS_DUPLICATE_COMMAND = 0x02,LLC_STATUS_ADAPTER_OPEN = 0x03, | 
|  | LLC_STATUS_ADAPTER_CLOSED = 0x04,LLC_STATUS_PARAMETER_MISSING = 0x05,LLC_STATUS_INVALID_OPTION = 0x06,LLC_STATUS_COMMAND_CANCELLED_FAILURE = 0x07, | 
|  | LLC_STATUS_ACCESS_DENIED = 0x08,LLC_STATUS_ADAPTER_NOT_INITIALIZED = 0x09,LLC_STATUS_CANCELLED_BY_USER = 0x0A, | 
|  | LLC_STATUS_COMMAND_CANCELLED_CLOSED = 0x0B,LLC_STATUS_SUCCESS_NOT_OPEN = 0x0C,LLC_STATUS_TIMER_ERROR = 0x11,LLC_STATUS_NO_MEMORY = 0x12, | 
|  | LLC_STATUS_INVALID_LOG_ID = 0x13,LLC_STATUS_LOST_LOG_DATA = 0x15,LLC_STATUS_BUFFER_SIZE_EXCEEDED = 0x16,LLC_STATUS_INVALID_BUFFER_LENGTH = 0x18, | 
|  | LLC_STATUS_INADEQUATE_BUFFERS = 0x19,LLC_STATUS_USER_LENGTH_TOO_LARGE = 0x1A,LLC_STATUS_INVALID_PARAMETER_TABLE = 0x1B, | 
|  | LLC_STATUS_INVALID_POINTER_IN_CCB = 0x1C,LLC_STATUS_INVALID_ADAPTER = 0x1D,LLC_STATUS_LOST_DATA_NO_BUFFERS = 0x20, | 
|  | LLC_STATUS_LOST_DATA_INADEQUATE_SPACE = 0x21,LLC_STATUS_TRANSMIT_ERROR_FS = 0x22,LLC_STATUS_TRANSMIT_ERROR = 0x23, | 
|  | LLC_STATUS_UNAUTHORIZED_MAC = 0x24,LLC_STATUS_MAX_COMMANDS_EXCEEDED = 0x25,LLC_STATUS_LINK_NOT_TRANSMITTING = 0x27, | 
|  | LLC_STATUS_INVALID_FRAME_LENGTH = 0x28,LLC_STATUS_INADEQUATE_RECEIVE = 0x30,LLC_STATUS_INVALID_NODE_ADDRESS = 0x32, | 
|  | LLC_STATUS_INVALID_RCV_BUFFER_LENGTH = 0x33,LLC_STATUS_INVALID_XMIT_BUFFER_LENGTH = 0x34,LLC_STATUS_INVALID_STATION_ID = 0x40, | 
|  | LLC_STATUS_LINK_PROTOCOL_ERROR = 0x41,LLC_STATUS_PARMETERS_EXCEEDED_MAX = 0x42,LLC_STATUS_INVALID_SAP_VALUE = 0x43, | 
|  | LLC_STATUS_INVALID_ROUTING_INFO = 0x44,LLC_STATUS_RESOURCES_NOT_AVAILABLE = 0x46,LLC_STATUS_LINK_STATIONS_OPEN = 0x47, | 
|  | LLC_STATUS_INCOMPATIBLE_COMMANDS = 0x4A,LLC_STATUS_OUTSTANDING_COMMANDS = 0x4C,LLC_STATUS_CONNECT_FAILED = 0x4D, | 
|  | LLC_STATUS_INVALID_REMOTE_ADDRESS = 0x4F,LLC_STATUS_CCB_POINTER_FIELD = 0x50,LLC_STATUS_INVALID_APPLICATION_ID = 0x52, | 
|  | LLC_STATUS_NO_SYSTEM_PROCESS = 0x56,LLC_STATUS_INADEQUATE_LINKS = 0x57,LLC_STATUS_INVALID_PARAMETER_1 = 0x58, | 
|  | LLC_STATUS_DIRECT_STATIONS_NOT_ASSIGNED = 0x5C,LLC_STATUS_DEVICE_DRIVER_NOT_INSTALLED = 0x5d,LLC_STATUS_ADAPTER_NOT_INSTALLED = 0x5e, | 
|  | LLC_STATUS_CHAINED_DIFFERENT_ADAPTERS = 0x5f,LLC_STATUS_INIT_COMMAND_STARTED = 0x60,LLC_STATUS_TOO_MANY_USERS = 0x61, | 
|  | LLC_STATUS_CANCELLED_BY_SYSTEM_ACTION = 0x62,LLC_STATUS_DIR_STATIONS_NOT_AVAILABLE = 0x63,LLC_STATUS_NO_GDT_SELECTORS = 0x65, | 
|  | LLC_STATUS_MEMORY_LOCK_FAILED = 0x69,LLC_STATUS_INVALID_BUFFER_ADDRESS = 0x80,LLC_STATUS_BUFFER_ALREADY_RELEASED = 0x81, | 
|  | LLC_STATUS_BIND_ERROR = 0xA0,LLC_STATUS_INVALID_VERSION = 0xA1,LLC_STATUS_NT_ERROR_STATUS = 0xA2,LLC_STATUS_PENDING = 0xFF | 
|  | } LLC_STATUS; | 
|  |  | 
|  | #define LLC_STATUS_MAX_ERROR 0xFF | 
|  |  | 
|  | typedef enum { | 
|  | ACSLAN_STATUS_COMMAND_ACCEPTED = 0,ACSLAN_STATUS_INVALID_CCB_POINTER = 1,ACSLAN_STATUS_CCB_IN_ERROR = 2,ACSLAN_STATUS_CHAINED_CCB_IN_ERROR = 3, | 
|  | ACSLAN_STATUS_SYSTEM_ERROR = 4,ACSLAN_STATUS_SYSTEM_STATUS = 5,ACSLAN_STATUS_INVALID_COMMAND = 6 | 
|  | } ACSLAN_STATUS; | 
|  |  | 
|  | ACSLAN_STATUS WINAPI AcsLan(PLLC_CCB pCcb,PLLC_CCB *ppBadCcb); | 
|  | LLC_STATUS WINAPI GetAdapterNameFromNumber(UINT AdapterNumber,LPTSTR pNdisName); | 
|  | LLC_STATUS WINAPI GetAdapterNumberFromName(LPTSTR pNdisName,UINT *AdapterNumber); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  | #endif |