i am trying to implement cancel queue on IRP Create
i got a sample from here
https://github.com/microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/cancelSafe
i want to convert following code for IRP Create, What changes should i made
//This routine empties the cancel safe queue and complete all the
// pended pre-read operations.
VOID PreReadEmptyQueueAndComplete(
_In_ PINSTANCE_CONTEXT InstanceContext
)
{
NTSTATUS Status;
FLT_PREOP_CALLBACK_STATUS callbackStatus;
PFLT_CALLBACK_DATA Data;
PQUEUE_CONTEXT QueueCtx;
do {
callbackStatus = FLT_PREOP_SUCCESS_NO_CALLBACK;
Data = FltCbdqRemoveNextIo( &InstanceContext->Cbdq, NULL );
if (Data) {
QueueCtx = (PQUEUE_CONTEXT) Data->QueueContext[0];
//changes here
if (!FlagOn(Data->Flags, FLTFL_CALLBACK_DATA_SYSTEM_BUFFER) &&
Data->Iopb->Parameters.Read.MdlAddress == NULL &&
Data->Iopb->Parameters.Read.Length > 0) {
Status = FltLockUserBuffer( Data );
if (!NT_SUCCESS( Status ))
{
callbackStatus = FLT_PREOP_COMPLETE;
Data->IoStatus.Status = Status;
}
}
FltCompletePendedPreOperation( Data,callbackStatus, NULL );
ExFreeToNPagedLookasideList( &Globals.QueueContextLookaside,
QueueCtx );
}
} while (Data);
}
plz help