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
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
protuser.h
Abstract:
Constants and types to access the NDISPROT driver.
Users must also include ntddndis.h
Environment:
User/Kernel mode.
Revision History:
--*/
#ifndef __NPROTUSER__H
#define __NPROTUSER__H
#define FSCTL_NDISPROT_BASE FILE_DEVICE_NETWORK
#define _NDISPROT_CTL_CODE(_Function, _Method, _Access) \
CTL_CODE(FSCTL_NDISPROT_BASE, _Function, _Method, _Access)
#define IOCTL_NDISPROT_OPEN_DEVICE \
_NDISPROT_CTL_CODE(0x200, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_NDISPROT_QUERY_OID_VALUE \
_NDISPROT_CTL_CODE(0x201, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_NDISPROT_SET_OID_VALUE \
_NDISPROT_CTL_CODE(0x205, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_NDISPROT_QUERY_BINDING \
_NDISPROT_CTL_CODE(0x203, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_NDISPROT_BIND_WAIT \
_NDISPROT_CTL_CODE(0x204, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
//
// Structure to go with IOCTL_NDISPROT_QUERY_OID_VALUE.
// The Data part is of variable length, determined by
// the input buffer length passed to DeviceIoControl.
//
typedef struct _NDISPROT_QUERY_OID
{
NDIS_OID Oid;
NDIS_PORT_NUMBER PortNumber;
UCHAR Data[sizeof(ULONG)];
} NDISPROT_QUERY_OID, *PNDISPROT_QUERY_OID;
//
// Structure to go with IOCTL_NDISPROT_SET_OID_VALUE.
// The Data part is of variable length, determined
// by the input buffer length passed to DeviceIoControl.
//
typedef struct _NDISPROT_SET_OID
{
NDIS_OID Oid;
NDIS_PORT_NUMBER PortNumber;
UCHAR Data[sizeof(ULONG)];
} NDISPROT_SET_OID, *PNDISPROT_SET_OID;
//
// Structure to go with IOCTL_NDISPROT_QUERY_BINDING.
// The input parameter is BindingIndex, which is the
// index into the list of bindings active at the driver.
// On successful completion, we get back a device name
// and a device descriptor (friendly name).
//
typedef struct _NDISPROT_QUERY_BINDING
{
ULONG BindingIndex; // 0-based binding number
ULONG DeviceNameOffset; // from start of this struct
ULONG DeviceNameLength; // in bytes
ULONG DeviceDescrOffset; // from start of this struct
ULONG DeviceDescrLength; // in bytes
} NDISPROT_QUERY_BINDING, *PNDISPROT_QUERY_BINDING;
#endif // __NPROTUSER__H
|