- Implement handling for IRP_MN_CANCEL_STOP_DEVICE
[reactos.git] / reactos / drivers / network / ndis / include / protocol.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
4 * FILE: ndis/protocol.h
5 * PURPOSE: Definitions for routines used by NDIS protocol drivers
6 */
7
8 #ifndef __PROTOCOL_H
9 #define __PROTOCOL_H
10
11 typedef struct _PROTOCOL_BINDING {
12 LIST_ENTRY ListEntry; /* Entry on global list */
13 KSPIN_LOCK Lock; /* Protecting spin lock */
14 NDIS_PROTOCOL_CHARACTERISTICS Chars; /* Characteristics */
15 WORK_QUEUE_ITEM WorkItem; /* Work item */
16 LIST_ENTRY AdapterListHead; /* List of adapter bindings */
17 } PROTOCOL_BINDING, *PPROTOCOL_BINDING;
18
19 #define GET_PROTOCOL_BINDING(Handle)((PPROTOCOL_BINDING)Handle)
20
21
22 typedef struct _ADAPTER_BINDING {
23 NDIS_OPEN_BLOCK NdisOpenBlock; /* NDIS defined fields */
24
25 LIST_ENTRY ListEntry; /* Entry on global list */
26 LIST_ENTRY ProtocolListEntry; /* Entry on protocol binding adapter list */
27 LIST_ENTRY AdapterListEntry; /* Entry on logical adapter list */
28 KSPIN_LOCK Lock; /* Protecting spin lock */
29 PPROTOCOL_BINDING ProtocolBinding; /* Protocol that opened adapter */
30 PLOGICAL_ADAPTER Adapter; /* Adapter opened by protocol */
31 } ADAPTER_BINDING, *PADAPTER_BINDING;
32
33 typedef struct _NDIS_REQUEST_MAC_BLOCK {
34 PVOID Unknown1;
35 PNDIS_OPEN_BLOCK Binding;
36 PVOID Unknown3;
37 PVOID Unknown4;
38 } NDIS_REQUEST_MAC_BLOCK, *PNDIS_REQUEST_MAC_BLOCK;
39
40 #define GET_ADAPTER_BINDING(Handle)((PADAPTER_BINDING)Handle)
41
42
43 extern LIST_ENTRY ProtocolListHead;
44 extern KSPIN_LOCK ProtocolListLock;
45
46
47 NDIS_STATUS
48 ProIndicatePacket(
49 PLOGICAL_ADAPTER Adapter,
50 PNDIS_PACKET Packet);
51
52 VOID NTAPI
53 ProSendPackets(
54 IN NDIS_HANDLE NdisBindingHandle,
55 IN PPNDIS_PACKET PacketArray,
56 IN UINT NumberOfPackets);
57
58 NTSTATUS
59 NTAPI
60 NdisIPnPQueryStopDevice(
61 IN PDEVICE_OBJECT DeviceObject,
62 PIRP Irp);
63
64 NTSTATUS
65 NTAPI
66 NdisIPnPCancelStopDevice(
67 IN PDEVICE_OBJECT DeviceObject,
68 PIRP Irp);
69
70 #endif /* __PROTOCOL_H */
71
72 /* EOF */
73