dlcapi.h 20 KB

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