blob: 8f1160388cfffc1f53fff9da082659c3404752f6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
#ifndef _MP_H
#define _MP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <ndis.h>
#ifdef __cplusplus
}
#endif
#define MP_NDIS_MAJOR_VERSION 6
#define MP_NDIS_MINOR_VERSION 0
#pragma warning(disable: 28121)
#pragma warning(disable: 28141)
typedef enum _NIC_PAUSE_STATE
{
NicPaused,
NicPausing,
NicRunning
} NIC_PAUSE_STATE, *PNIC_PAUSE_STATE;
typedef enum _NIC_PNP_STATE
{
NicStarted,
NicInReset,
NicShutdown,
NicHalted
} NIC_PNP_STATE, *PNIC_PNP_STATE;
#define NIC_TAG ((ULONG)'001E')
#define NIC_INTERFACE_TYPE NdisInterfacePci
#define NIC_CHECK_FOR_HANG_TIME 2
//10000 system time units (100-nanosecond intervals) = 1 milliseconds
#define NIC_LINK_DETECTION_DELAY -1000000 //-1*(100*10000)
typedef struct _MP_ADAPTER
{
NDIS_HANDLE AdapterHandle;
NDIS_SPIN_LOCK Lock;
NIC_PAUSE_STATE PauseState;
NIC_PNP_STATE PNPState;
ULONG RefCount;
ULONG LastRefCount;
BOOLEAN InterruptRegistered;
NDIS_HANDLE InterruptHandle;
BOOLEAN TimerRegistered;
NDIS_HANDLE TimerHandle;
BOOLEAN AdapetrMemoryAllocated;
NDIS_HANDLE NdisMiniportDmaHandle;
} MP_ADAPTER, *PMP_ADAPTER;
//--------------------------------------
// Miniport routines in MP_MAIN.C
//--------------------------------------
#ifdef __cplusplus
extern "C"
#endif
NDIS_STATUS
DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
);
MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MPAllocateComplete;
MINIPORT_HALT MPHalt;
MINIPORT_SET_OPTIONS MPSetOptions;
MINIPORT_INITIALIZE MPInitialize;
MINIPORT_PAUSE MPPause;
MINIPORT_RESTART MPRestart;
MINIPORT_OID_REQUEST MPOidRequest;
MINIPORT_INTERRUPT_DPC MPHandleInterrupt;
MINIPORT_ISR MPIsr;
MINIPORT_RESET MPReset;
MINIPORT_RETURN_NET_BUFFER_LISTS MPReturnNetBufferLists;
MINIPORT_CANCEL_OID_REQUEST MPCancelOidRequest;
MINIPORT_SHUTDOWN MPShutdown;
MINIPORT_SEND_NET_BUFFER_LISTS MPSendNetBufferLists;
MINIPORT_CANCEL_SEND MPCancelSendNetBufferLists;
MINIPORT_DEVICE_PNP_EVENT_NOTIFY MPPnPEventNotify;
MINIPORT_UNLOAD MPUnload;
MINIPORT_CHECK_FOR_HANG MPCheckForHang;
MINIPORT_ENABLE_INTERRUPT MpEnableInterrupt;
MINIPORT_DISABLE_INTERRUPT MpDisableInterrupt;
MINIPORT_SYNCHRONIZE_INTERRUPT MPSynchronizeInterrupt;
MINIPORT_PROCESS_SG_LIST MPProcessSGList;
NDIS_TIMER_FUNCTION MpDemonstrationTimer;
NDIS_IO_WORKITEM_FUNCTION MPQueuedWorkItem;
NDIS_STATUS
NICAllocAdapterMemory(
_In_ PMP_ADAPTER Adapter
);
NDIS_STATUS
MpRegisterInterrupt(
_In_ PMP_ADAPTER pAdapter
);
NDIS_STATUS
MpQueueTimer(
_In_ PMP_ADAPTER pAdapter
);
#endif // _MP_H
|