how to send the request to the next driver in the stack to further completion?
In my filter driver driver I register a queue for EventWrite with callback EvtDeviceIoWrite as follows:
VOID
EvtDeviceIoWrite(
IN WDFQUEUE Queue,
IN WDFREQUEST Request,
IN size_t Length
)
{
WDFMEMORY memory;
NTSTATUS status;
PUCHAR characters;
UCHAR currentChar;
UNREFERENCED_PARAMETER(Queue);
status = WdfRequestRetrieveInputMemory(Request, &memory);
if (!NT_SUCCESS(status)) {
KdPrint(("RetreiveInputMemo: failed 0x%x\n", status));
return;
}
characters = (PUCHAR)WdfMemoryGetBuffer(memory, NULL);
while (Length != 0) {
Length--;
currentChar = *(characters++);
// Here I would like to edit the buffer
// copy it to output buffer WdfMemoryCopyFromBuffer
}
**// what should be here for send**
}
I just want do something like this, but for the request.
Sorry I am newbiee in kernel developing, and it will be greatful if someone could point me to the right way to achieve this. Any sugestions will be appreciated.
in Windows-driver-samples exist huge count of examples how do Forwarding I/O Requests. take for example first simply code like in filter.c - here this done by FilterForwardRequest
or FilterForwardRequestWithCompletionRoutine
- so in general called
WdfRequestSend(Request, WdfDeviceGetIoTarget(WdfIoQueueGetDevice(Queue)),WDF_NO_SEND_OPTIONS);