MCPcopy Create free account
hub / github.com/Bareflank/hypervisor / loaderEvtIoDeviceControl

Function loaderEvtIoDeviceControl

loader/windows/src/Queue.c:91–195  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

89}
90
91VOID
92loaderEvtIoDeviceControl(
93 _In_ WDFQUEUE Queue,
94 _In_ WDFREQUEST Request,
95 _In_ size_t OutputBufferLength,
96 _In_ size_t InputBufferLength,
97 _In_ ULONG IoControlCode)
98/*++
99
100Routine Description:
101
102 This event is invoked when the framework receives IRP_MJ_DEVICE_CONTROL request.
103
104Arguments:
105
106 Queue - Handle to the framework queue object that is associated with the
107 I/O request.
108
109 Request - Handle to a framework request object.
110
111 OutputBufferLength - Size of the output buffer in bytes
112
113 InputBufferLength - Size of the input buffer in bytes
114
115 IoControlCode - I/O control code.
116
117Return Value:
118
119 VOID
120
121--*/
122{
123 PVOID in = 0;
124 PVOID out = 0;
125 size_t in_size = 0;
126 size_t out_size = 0;
127
128 NTSTATUS status;
129
130 TraceEvents(
131 TRACE_LEVEL_INFORMATION,
132 TRACE_QUEUE,
133 "%!FUNC! Queue 0x%p, Request 0x%p OutputBufferLength %d "
134 "InputBufferLength %d IoControlCode %d",
135 Queue,
136 Request,
137 (int)OutputBufferLength,
138 (int)InputBufferLength,
139 IoControlCode);
140
141 if (InputBufferLength != 0) {
142 status = WdfRequestRetrieveInputBuffer(Request, InputBufferLength, &in, &in_size);
143
144 if (!NT_SUCCESS(status)) {
145 WdfRequestComplete(Request, STATUS_ACCESS_DENIED);
146 return;
147 }
148 }

Callers

nothing calls this directly

Calls 5

start_vmmFunction · 0.85
stop_vmmFunction · 0.85
dump_vmmFunction · 0.85
bferrorFunction · 0.50
bferror_x64Function · 0.50

Tested by

no test coverage detected