|
|
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.