a2fd5289e73200a1bee6e685be51f5ca528d63e3
[reactos.git] / 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 #pragma once
9
10 typedef struct _PROTOCOL_BINDING {
11 LIST_ENTRY ListEntry; /* Entry on global list */
12 KSPIN_LOCK Lock; /* Protecting spin lock */
13 NDIS_PROTOCOL_CHARACTERISTICS Chars; /* Characteristics */
14 WORK_QUEUE_ITEM WorkItem; /* Work item */
15 LIST_ENTRY AdapterListHead; /* List of adapter bindings */
16 } PROTOCOL_BINDING, *PPROTOCOL_BINDING;
17
18 #define GET_PROTOCOL_BINDING(Handle)((PPROTOCOL_BINDING)Handle)
19
20
21 typedef struct _ADAPTER_BINDING {
22 NDIS_OPEN_BLOCK NdisOpenBlock; /* NDIS defined fields */
23
24 LIST_ENTRY ListEntry; /* Entry on global list */
25 LIST_ENTRY ProtocolListEntry; /* Entry on protocol binding adapter list */
26 LIST_ENTRY AdapterListEntry; /* Entry on logical adapter list */
27 KSPIN_LOCK Lock; /* Protecting spin lock */
28 PPROTOCOL_BINDING ProtocolBinding; /* Protocol that opened adapter */
29 PLOGICAL_ADAPTER Adapter; /* Adapter opened by protocol */
30 } ADAPTER_BINDING, *PADAPTER_BINDING;
31
32 typedef struct _NDIS_REQUEST_MAC_BLOCK {
33 PVOID Unknown1;
34 PNDIS_OPEN_BLOCK Binding;
35 PVOID Unknown3;
36 PVOID Unknown4;
37 } NDIS_REQUEST_MAC_BLOCK, *PNDIS_REQUEST_MAC_BLOCK;
38
39 #define GET_ADAPTER_BINDING(Handle)((PADAPTER_BINDING)Handle)
40
41
42 extern LIST_ENTRY ProtocolListHead;
43 extern KSPIN_LOCK ProtocolListLock;
44
45
46 NDIS_STATUS
47 ProIndicatePacket(
48 PLOGICAL_ADAPTER Adapter,
49 PNDIS_PACKET Packet);
50
51 VOID NTAPI
52 ProSendPackets(
53 IN NDIS_HANDLE NdisBindingHandle,
54 IN PPNDIS_PACKET PacketArray,
55 IN UINT NumberOfPackets);
56
57 NTSTATUS
58 NTAPI
59 NdisIPnPQueryStopDevice(
60 IN PDEVICE_OBJECT DeviceObject,
61 PIRP Irp);
62
63 NTSTATUS
64 NTAPI
65 NdisIPnPCancelStopDevice(
66 IN PDEVICE_OBJECT DeviceObject,
67 PIRP Irp);
68
69 NDIS_STATUS
70 proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet);
71
72 VOID
73 NTAPI
74 ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protocol);
75
76 /* EOF */