home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / dlcapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-20  |  24.5 KB  |  724 lines

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