ITek_init.h
上传用户:cnfair
上传日期:2007-01-07
资源大小:32k
文件大小:6k
源码类别:

驱动编程

开发平台:

Visual C++

  1. //
  2. // ITEK MAC driver initialization header file
  3. //
  4. #ifndef _ITEK_INIT_H_
  5. #define _ITEK_INIT_H_
  6. #define ITEK_DESCRIPTION "ImpressTek MAC Driver"
  7. #define ITEK_DRIVER_MAJOR 0x03
  8. #define ITEK_DRIVER_MINOR 0x00
  9. #define ITEK_VENDOR_ID (0x0000)
  10. #define ITEK_DEVICE_ID (0x0000)
  11. #define NIC_TOTAL_BITRATE (10) //in Mbps
  12. //lookahead and pdu size definition (tightly bound to Ethernet topology)
  13. #define ITEK_ADDRESS_SIZE (6)
  14. #define ITEK_PDU_HDRSIZE (14)
  15. #define ITEK_SDU_MAXSIZE (1500)
  16. #define ITEK_TX_MAXSIZE (1520) // 
  17. #define ITEK_TX_MINSIZE (526) // 
  18. #define ITEK_MAX_LOOKAHEAD (ITEK_SDU_MAXSIZE)
  19. #define ITEK_MOD_INC(x,y) (((x)+1) % (y))
  20. #define ITEK_MULTICASTLIST_MAX (10)
  21. #define ITEK_TIMEOUT_MSEC (2000)
  22. struct _ITEK_OPEN;
  23. // Mac reserved data structure, total size of 16 bytes
  24. typedef struct {
  25. struct _ITEK_OPEN *pITekOpen;
  26. PNDIS_PACKET pNextPacket; //Next Packet to be sent
  27. } ITEK_RESERVED_STRU, *PITEK_RESERVED_STRU;
  28. #define ITEK_RESERVED(pNdisPacket) ((PITEK_RESERVED_STRU)(pNdisPacket)->MacReserved)
  29. extern NDIS_PHYSICAL_ADDRESS HighestPhysicalAddress;
  30. typedef struct _DRIVER_BLOCK {
  31.     //
  32.     // NDIS wrapper information.
  33.     //
  34.     NDIS_HANDLE NdisMacHandle;          // returned from NdisRegisterMac
  35.     NDIS_HANDLE NdisWrapperHandle;      // returned from NdisInitializeWrapper
  36.     NDIS_MAC_CHARACTERISTICS MacCharacteristics;
  37. PDRIVER_OBJECT DriverObject;
  38.     //
  39.     // Adapters registered for this Mac driver.
  40.     //
  41.     struct _ITEK_ADAPTER *NextITek;
  42. } DRIVER_BLOCK, *PDRIVER_BLOCK;
  43. extern DRIVER_BLOCK        gDriverBlock;
  44. // ITEK NIC driver object
  45. typedef struct _ITEK_ADAPTER {
  46. // NIC status
  47. NIC_STATUS NicStatus;
  48. //Spin Lock
  49. NDIS_SPIN_LOCK Lock; //For Windows95, set to ZERO
  50. //MacAdapter handle
  51. NDIS_HANDLE ITekAdapterHandle;
  52. //Configuration handle
  53. NDIS_HANDLE ConfigurationHandle;
  54. //Wrapper Handle
  55. NDIS_HANDLE WrapperHandle;
  56. //Bus type - ???NdisInterfaceInternal
  57. NDIS_INTERFACE_TYPE AdapterType;
  58. //Multicast List Max
  59. UINT MulticastListMax;
  60. //ITEK NIC parameters
  61. USHORT VendorID;
  62. USHORT DeviceID;
  63. //Packet Filter
  64. UCHAR PermanentAddress[ITEK_ADDRESS_SIZE];
  65. UCHAR CurrentAddress[ITEK_ADDRESS_SIZE];
  66. UCHAR DestinationAddress[ITEK_ADDRESS_SIZE];
  67. PETH_FILTER FilterDB;
  68. #ifdef ITEK_TIMER
  69. NDIS_TIMER NdisTimer;
  70. #endif
  71. PNDIS_PACKET pHeadPacket;
  72. PNDIS_PACKET pTailPacket;
  73. struct _ITEK_ADAPTER *NextITek;
  74. UINT ReferenceCount;
  75. struct _ITEK_OPEN *NextOpen;
  76. } ITEK_ADAPTER, *PITEK_ADAPTER;
  77. typedef struct _ITEK_OPEN {
  78. // NDIS wrapper information.
  79. NDIS_HANDLE NdisBindingContext; // passed to MacOpenAdapter
  80. UINT OpenOptions;
  81. PSTRING AddressingInformation; // not used currently
  82. // Links to our adapter.
  83. PITEK_ADAPTER pITekAdapter;
  84. struct _ITEK_OPEN *NextOpen;
  85. // Links to our MAC.
  86. PDRIVER_BLOCK pDriverBlock;
  87. // Index of this adapter in the filter database.
  88. NDIS_HANDLE NdisFilterHandle;
  89. // Indication information
  90. UINT MaxLookAhead;
  91. ULONG PacketFilter;
  92. // Reset/Close information.
  93. UINT ReferenceCount;
  94. BOOLEAN Closing; // is a close pending
  95. //NDIS_REQUEST CloseFilterRequest; // Holds Requests for pending close op
  96. //NDIS_REQUEST CloseAddressRequest;// Holds Requests for pending close op
  97. UINT ProtOptionFlags; //Holds the value of OID_GENERAL_PROTOCOL_OPTIONS
  98. } ITEK_OPEN, *PITEK_OPEN;
  99. // prototypes of our callbacks
  100. #ifdef __cplusplus
  101. extern "C" {
  102. #endif
  103. NTSTATUS NDIS_API
  104. DriverEntry(
  105. IN PDRIVER_OBJECT DriverObject, // NULL in Windows95 CHICAGO 
  106. IN PUNICODE_STRING RegistryPath // NULL in Windows95 CHICAGO
  107. );
  108. NDIS_STATUS NDIS_API
  109. ITekAddAdapter(
  110. IN NDIS_HANDLE MacMacContext,
  111.     IN NDIS_HANDLE ConfigurationHandle,
  112. IN PNDIS_STRING AdapterName
  113. );
  114. VOID NDIS_API
  115. ITekRemoveAdapter(
  116.     IN PVOID MacAdapterContext
  117.     );
  118. NDIS_STATUS NDIS_API
  119. ITekOpenAdapter(
  120.     OUT PNDIS_STATUS OpenErrorStatus,
  121.     OUT NDIS_HANDLE * MacBindingHandle,
  122.     OUT PUINT SelectedMediumIndex,
  123.     IN PNDIS_MEDIUM MediumArray,
  124.     IN UINT MediumArraySize,
  125.     IN NDIS_HANDLE NdisBindingContext,
  126.     IN NDIS_HANDLE MacAdapterContext,
  127.     IN UINT OpenOptions,
  128.     IN PSTRING AddressingInformation OPTIONAL
  129.     );
  130. NDIS_STATUS NDIS_API
  131. ITekCloseAdapter(
  132.     IN NDIS_HANDLE MacBindingHandle
  133.     );
  134. NDIS_STATUS NDIS_API
  135. ITekReset(
  136.     IN NDIS_HANDLE MacBindingHandle
  137.     );
  138. NDIS_STATUS NDIS_API
  139. ITekRequest(
  140.     IN NDIS_HANDLE MacBindingHandle,
  141.     IN PNDIS_REQUEST NdisRequest
  142.     );
  143. NDIS_STATUS NDIS_API
  144. ITekQueryGlobalStatistics(
  145.     IN NDIS_HANDLE MacBindingHandle,
  146.     IN PNDIS_REQUEST NdisRequest
  147.     );
  148. VOID NDIS_API
  149. ITekUnload(
  150.     IN NDIS_HANDLE MacMacContext
  151.     );
  152. NDIS_STATUS NDIS_API
  153. ITekTransferData(
  154.     IN NDIS_HANDLE MacBindingHandle,
  155.     IN NDIS_HANDLE MacReceiveContext,
  156.     IN UINT ByteOffset,
  157.     IN UINT BytesToTransfer,
  158.     OUT PNDIS_PACKET Packet,
  159.     OUT PUINT BytesTransferred
  160.     );
  161. NDIS_STATUS NDIS_API
  162. ITekSend(
  163.     IN NDIS_HANDLE MacBindingHandle,
  164.     IN PNDIS_PACKET Packet
  165.     );
  166. NDIS_STATUS NDIS_API 
  167. ITekQueryInformation(
  168. IN  NDIS_HANDLE ITekAdapterContext,
  169. IN NDIS_HANDLE ITekOpenContext,
  170. IN  NDIS_OID    Oid,
  171. IN  PVOID       InformationBuffer,
  172. IN  ULONG       InformationBufferLength,
  173. OUT PULONG      BytesWritten,
  174. OUT PULONG      BytesNeeded
  175. );
  176. NDIS_STATUS NDIS_API 
  177. ITekSetInformation(
  178. IN  NDIS_HANDLE ITekAdapterContext,
  179. IN NDIS_HANDLE ITekOpenContext,
  180. IN PNDIS_REQUEST NdisRequest,
  181. IN  NDIS_OID    Oid,
  182. IN  PVOID       InformationBuffer,
  183. IN  ULONG       InformationBufferLength,
  184. OUT PULONG      BytesRead,
  185. OUT PULONG      BytesNeeded
  186. );
  187. NDIS_STATUS NDIS_API
  188. ITekAddressChangeAction(
  189. IN UINT OldFilterCount,
  190. IN CHAR OldAddresses[][ETH_LENGTH_OF_ADDRESS],
  191. IN UINT NewFilterCount,
  192. IN CHAR NewAddresses[][ETH_LENGTH_OF_ADDRESS],
  193. IN NDIS_HANDLE MacBindingHandle,
  194. IN PNDIS_REQUEST NdisRequest,
  195. IN BOOLEAN Set
  196. );
  197. NDIS_STATUS NDIS_API
  198. ITekFilterChangeAction(
  199.     IN UINT OldFilterClasses,
  200.     IN UINT NewFilterClasses,
  201.     IN NDIS_HANDLE MacBindingHandle,
  202.     IN PNDIS_REQUEST NdisRequest,
  203.     IN BOOLEAN Set
  204.     );
  205. VOID NDIS_API
  206. ITekCloseAction(
  207. IN NDIS_HANDLE MacBindingHandle
  208. );
  209. #ifdef __cplusplus
  210. }
  211. #endif
  212. #endif /* _ITEK_INIT_H_ */