-
-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathDevice.h
executable file
·134 lines (106 loc) · 2.75 KB
/
Device.h
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
123
124
125
126
127
128
129
130
131
132
133
134
/*++
Module Name:
device.h
Abstract:
This file contains the device definitions.
Environment:
User-mode Driver Framework 2
--*/
#pragma once
#include <windows.h>
#include <hidport.h>
EXTERN_C_START
typedef UCHAR HID_REPORT_DESCRIPTOR, * PHID_REPORT_DESCRIPTOR;
typedef struct _QUEUE_CONTEXT* PQUEUE_CONTEXT;
//
// The device context performs the same job as
// a WDM device extension in the driver frameworks
//
typedef struct _DEVICE_CONTEXT
{
WDFDEVICE Device;
WDFQUEUE DefaultQueue;
WDFQUEUE ManualQueue;
HID_DEVICE_ATTRIBUTES HidDeviceAttributes;
BYTE DeviceData;
HID_DESCRIPTOR HidDescriptor;
PHID_REPORT_DESCRIPTOR ReportDescriptor;
BOOLEAN ReadReportDescFromRegistry;
} DEVICE_CONTEXT, * PDEVICE_CONTEXT;
//
// This macro will generate an inline function called GetDeviceContext
// which will be used to get a pointer to the device context memory
// in a type safe manner.
//
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DEVICE_CONTEXT, GetDeviceContext)
//
// Function to initialize the device and its callbacks
//
NTSTATUS
XGMDriverCreateDevice(
_Inout_ PWDFDEVICE_INIT DeviceInit
);
NTSTATUS
ReadReport(
_In_ PQUEUE_CONTEXT QueueContext,
_In_ WDFREQUEST Request,
_Always_(_Out_)
BOOLEAN* CompleteRequest
);
NTSTATUS
WriteReport(
_In_ PQUEUE_CONTEXT QueueContext,
_In_ WDFREQUEST Request
);
NTSTATUS
GetFeature(
_In_ PQUEUE_CONTEXT QueueContext,
_In_ WDFREQUEST Request
);
NTSTATUS
SetFeature(
_In_ PQUEUE_CONTEXT QueueContext,
_In_ WDFREQUEST Request
);
NTSTATUS
GetInputReport(
_In_ PQUEUE_CONTEXT QueueContext,
_In_ WDFREQUEST Request
);
NTSTATUS
SetOutputReport(
_In_ PQUEUE_CONTEXT QueueContext,
_In_ WDFREQUEST Request
);
NTSTATUS
GetString(
_In_ WDFREQUEST Request
);
NTSTATUS
GetIndexedString(
_In_ WDFREQUEST Request
);
NTSTATUS
GetStringId(
_In_ WDFREQUEST Request,
_Out_ ULONG* StringId,
_Out_ ULONG* LanguageId
);
NTSTATUS
RequestCopyFromBuffer(
_In_ WDFREQUEST Request,
_In_ PVOID SourceBuffer,
_When_(NumBytesToCopyFrom == 0, __drv_reportError(NumBytesToCopyFrom cannot be zero))
_In_ size_t NumBytesToCopyFrom
);
NTSTATUS
RequestGetHidXferPacket_ToReadFromDevice(
_In_ WDFREQUEST Request,
_Out_ HID_XFER_PACKET* Packet
);
NTSTATUS
RequestGetHidXferPacket_ToWriteToDevice(
_In_ WDFREQUEST Request,
_Out_ HID_XFER_PACKET* Packet
);
EXTERN_C_END