Hi Doron, Hi Guys
I am posting my code here on this issue. I am getting (STATUS_PRIVILEGE_NOT_HELD) error on completion routine even though is added
IoGetNextIrpStackLocation(WdfRequestWdmGetIrp(RequestCopy))->FileObject = IoGetCurrentIrpStackLocation(WdfRequestWdmGetIrp(Request))->FileObject;
Your help is very much appreciated.
ScIoRead(
IN WDFQUEUE Queue,
IN WDFREQUEST Request,
IN size_t Length
)
{
…
…
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = device;
status = WdfRequestCreate(NULL,context->TargetToSendRequestsTo,&RequestCopy);
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = device;
status = WdfMemoryCreate(
NULL,
NonPagedPool,
DRIVER_TAG,
Length,
&memory,
NULL
);
status = WdfIoTargetFormatRequestForRead(context->TargetToSendRequestsTo,
RequestCopy,
memory,
NULL,
NULL);
IoGetNextIrpStackLocation(WdfRequestWdmGetIrp(RequestCopy))->FileObject = IoGetCurrentIrpStackLocation(WdfRequestWdmGetIrp(Request))->FileObject;
//
// Park the request into the InFlightReadRequests queue
//
status = WdfRequestForwardToIoQueue(Request, context->InFlightReadRequestsQueue);
WdfRequestSetCompletionRoutine(RequestCopy,RequestCopyCompletionRoutine,context);
WdfRequestSend(RequestCopy,context->TargetToSendRequestsTo,WDF_NO_SEND_OPTIONS));
return;
}
On Completion routine, I do
VOID
RequestCopyCompletionRoutine(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
)
{
…
status = WdfRequestGetStatus(Request);
//
// The status above returns STATUS_PRIVILEGE_NOT_HELD
//
}