|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1989 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: packet.h ! 8: ! 9: Abstract: ! 10: ! 11: Author: ! 12: ! 13: Revision History: ! 14: ! 15: --*/ ! 16: ! 17: #define MAX_REQUESTS 4 ! 18: ! 19: ! 20: typedef struct _INTERNAL_REQUEST { ! 21: LIST_ENTRY ListElement; ! 22: PIRP Irp; ! 23: NDIS_REQUEST Request; ! 24: ! 25: } INTERNAL_REQUEST, *PINTERNAL_REQUEST; ! 26: ! 27: ! 28: ! 29: // ! 30: // Port device extension. ! 31: // ! 32: ! 33: typedef struct _DEVICE_EXTENSION { ! 34: ! 35: KSPIN_LOCK DeviceSpinLock; ! 36: ! 37: PDEVICE_OBJECT DeviceObject; ! 38: ! 39: UNICODE_STRING MacDriverName; ! 40: UNICODE_STRING DeviceName; ! 41: ! 42: NDIS_HANDLE NdisProtocolHandle; ! 43: ! 44: NDIS_HANDLE AdapterHandle; ! 45: ! 46: NDIS_STRING AdapterName; ! 47: ! 48: PIRP OpenCloseIrp; ! 49: ! 50: KSPIN_LOCK FreePacketListSpinLock; ! 51: LIST_ENTRY FreePacketList; ! 52: ! 53: KSPIN_LOCK RcvQSpinLock; ! 54: LIST_ENTRY RcvList; ! 55: ! 56: KSPIN_LOCK RequestSpinLock; ! 57: LIST_ENTRY RequestList; ! 58: ! 59: LIST_ENTRY ResetIrpList; ! 60: ! 61: NDIS_HANDLE PacketPool; ! 62: ! 63: INTERNAL_REQUEST Requests[MAX_REQUESTS]; ! 64: ! 65: } DEVICE_EXTENSION, *PDEVICE_EXTENSION; ! 66: ! 67: ! 68: typedef struct _PACKET_RESERVED { ! 69: LIST_ENTRY ListElement; ! 70: PIRP Irp; ! 71: PMDL pMdl; ! 72: } PACKET_RESERVED, *PPACKET_RESERVED; ! 73: ! 74: typedef struct _INTERNAL_PACKET { ! 75: NDIS_PACKET Packet; ! 76: PACKET_RESERVED Reserved; ! 77: } INTERNAL_PACKET, *PINTERNAL_PACKET; ! 78: ! 79: ! 80: #define ETHERNET_HEADER_LENGTH 14 ! 81: ! 82: #define RESERVED(_p) ((PPACKET_RESERVED)((_p)->ProtocolReserved)) ! 83: ! 84: #define TRANSMIT_PACKETS 16 ! 85: ! 86: ! 87: ! 88: #define FILE_DEVICE_PROTOCOL 0x8000 ! 89: ! 90: #define PACKET_SET 0x00c0 ! 91: #define PACKET_QUERY 0x0080 ! 92: ! 93: #define PACKET_FILTER 0x000e ! 94: #define PACKET_RESET 0x00ff ! 95: ! 96: ! 97: ! 98: #define IOCTL_PROTOCOL_SET_FILTER CTL_CODE(FILE_DEVICE_PROTOCOL, PACKET_SET | PACKET_FILTER, METHOD_BUFFERED, FILE_ANY_ACCESS) ! 99: #define IOCTL_PROTOCOL_GET_FILTER CTL_CODE(FILE_DEVICE_PROTOCOL, PACKET_QUERY | PACKET_FILTER, METHOD_BUFFERED, FILE_ANY_ACCESS) ! 100: ! 101: #define IOCTL_PROTOCOL_RESET CTL_CODE(FILE_DEVICE_PROTOCOL, PACKET_RESET, METHOD_BUFFERED, FILE_ANY_ACCESS) ! 102: ! 103: ! 104: ! 105: ! 106: ! 107: ! 108: ! 109: ! 110: ! 111: VOID ! 112: PacketOpenAdapterComplete( ! 113: IN NDIS_HANDLE ProtocolBindingContext, ! 114: IN NDIS_STATUS Status, ! 115: IN NDIS_STATUS OpenErrorStatus ! 116: ); ! 117: ! 118: VOID ! 119: PacketCloseAdapterComplete( ! 120: IN NDIS_HANDLE ProtocolBindingContext, ! 121: IN NDIS_STATUS Status ! 122: ); ! 123: ! 124: ! 125: NDIS_STATUS ! 126: PacketReceiveIndicate( ! 127: IN NDIS_HANDLE ProtocolBindingContext, ! 128: IN NDIS_HANDLE MacReceiveContext, ! 129: IN PVOID HeaderBuffer, ! 130: IN UINT HeaderBufferSize, ! 131: IN PVOID LookAheadBuffer, ! 132: IN UINT LookaheadBufferSize, ! 133: IN UINT PacketSize ! 134: ); ! 135: ! 136: VOID ! 137: PacketReceiveComplete( ! 138: IN NDIS_HANDLE ProtocolBindingContext ! 139: ); ! 140: ! 141: ! 142: VOID ! 143: PacketRequestComplete( ! 144: IN NDIS_HANDLE ProtocolBindingContext, ! 145: IN PNDIS_REQUEST pRequest, ! 146: IN NDIS_STATUS Status ! 147: ); ! 148: ! 149: VOID ! 150: PacketSendComplete( ! 151: IN NDIS_HANDLE ProtocolBindingContext, ! 152: IN PNDIS_PACKET pPacket, ! 153: IN NDIS_STATUS Status ! 154: ); ! 155: ! 156: ! 157: VOID ! 158: PacketResetComplete( ! 159: IN NDIS_HANDLE ProtocolBindingContext, ! 160: IN NDIS_STATUS Status ! 161: ); ! 162: ! 163: ! 164: VOID ! 165: PacketStatus( ! 166: IN NDIS_HANDLE ProtocolBindingContext, ! 167: IN NDIS_STATUS Status, ! 168: IN PVOID StatusBuffer, ! 169: IN UINT StatusBufferSize ! 170: ); ! 171: ! 172: ! 173: VOID ! 174: PacketStatusComplete( ! 175: IN NDIS_HANDLE ProtocolBindingContext ! 176: ); ! 177: ! 178: VOID ! 179: PacketTransferDataComplete( ! 180: IN NDIS_HANDLE ProtocolBindingContext, ! 181: IN PNDIS_PACKET Packet, ! 182: IN NDIS_STATUS Status, ! 183: IN UINT BytesTransferred ! 184: ); ! 185: ! 186: ! 187: VOID ! 188: PacketRemoveReference( ! 189: IN PDEVICE_EXTENSION DeviceExtension ! 190: ); ! 191: ! 192: ! 193: NTSTATUS ! 194: PacketCleanup( ! 195: IN PDEVICE_OBJECT DeviceObject, ! 196: IN PIRP FlushIrp ! 197: ); ! 198: ! 199: ! 200: NTSTATUS ! 201: PacketShutdown( ! 202: IN PDEVICE_OBJECT DeviceObject, ! 203: IN PIRP Irp ! 204: ); ! 205: ! 206: VOID ! 207: PacketUnload( ! 208: IN PDRIVER_OBJECT DriverObject ! 209: ); ! 210: ! 211: ! 212: ! 213: NTSTATUS ! 214: PacketOpen( ! 215: IN PDEVICE_OBJECT DeviceObject, ! 216: IN PIRP Irp ! 217: ); ! 218: ! 219: NTSTATUS ! 220: PacketClose( ! 221: IN PDEVICE_OBJECT DeviceObject, ! 222: IN PIRP Irp ! 223: ); ! 224: ! 225: NTSTATUS ! 226: PacketWrite( ! 227: IN PDEVICE_OBJECT DeviceObject, ! 228: IN PIRP Irp ! 229: ); ! 230: ! 231: NTSTATUS ! 232: PacketRead( ! 233: IN PDEVICE_OBJECT DeviceObject, ! 234: IN PIRP Irp ! 235: ); ! 236: ! 237: NTSTATUS ! 238: PacketIoControl( ! 239: IN PDEVICE_OBJECT DeviceObject, ! 240: IN PIRP Irp ! 241: );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.