sys: request work item refactoring

This commit is contained in:
Bill Zissimopoulos
2016-11-08 13:53:11 -08:00
parent 9d176643c3
commit 5a83c68f56
2 changed files with 19 additions and 19 deletions

View File

@ -20,12 +20,12 @@
static VOID FspWqWorkRoutine(PVOID Context);
NTSTATUS FspWqCreateAndPostIrpWorkItem(PIRP Irp,
FSP_WQ_REQUEST_WORK *WorkRoutine, FSP_IOP_REQUEST_FINI *RequestFini,
FSP_IOP_REQUEST_WORK *WorkRoutine, FSP_IOP_REQUEST_FINI *RequestFini,
BOOLEAN CreateAndPost)
{
FSP_FSCTL_TRANSACT_REQ *RequestWorkItem = FspIrpRequest(Irp);
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
if (0 == RequestWorkItem)
if (0 == Request)
{
NTSTATUS Result;
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
@ -43,15 +43,15 @@ NTSTATUS FspWqCreateAndPostIrpWorkItem(PIRP Irp,
}
Result = FspIopCreateRequestWorkItem(Irp, sizeof(WORK_QUEUE_ITEM),
RequestFini, &RequestWorkItem);
RequestFini, &Request);
if (!NT_SUCCESS(Result))
return Result;
ASSERT(sizeof(FSP_WQ_REQUEST_WORK *) == sizeof(PVOID));
ASSERT(sizeof(FSP_IOP_REQUEST_WORK *) == sizeof(PVOID));
FspIopRequestContext(RequestWorkItem, FspWqRequestWorkRoutine) =
FspIopRequestContext(Request, FspWqRequestWorkRoutine) =
(PVOID)(UINT_PTR)WorkRoutine;
ExInitializeWorkItem((PWORK_QUEUE_ITEM)&RequestWorkItem->Buffer, FspWqWorkRoutine, Irp);
ExInitializeWorkItem((PWORK_QUEUE_ITEM)&Request->Buffer, FspWqWorkRoutine, Irp);
}
if (!CreateAndPost)
@ -63,14 +63,14 @@ NTSTATUS FspWqCreateAndPostIrpWorkItem(PIRP Irp,
VOID FspWqPostIrpWorkItem(PIRP Irp)
{
FSP_FSCTL_TRANSACT_REQ *RequestWorkItem = FspIrpRequest(Irp);
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
ASSERT(RequestWorkItem->Kind == FspFsctlTransactReservedKind);
ASSERT(RequestWorkItem->Size == sizeof *RequestWorkItem + sizeof(WORK_QUEUE_ITEM));
ASSERT(RequestWorkItem->Hint == (UINT_PTR)Irp);
ASSERT(Request->Kind == FspFsctlTransactReservedKind);
ASSERT(Request->Size == sizeof *Request + sizeof(WORK_QUEUE_ITEM));
ASSERT(Request->Hint == (UINT_PTR)Irp);
IoMarkIrpPending(Irp);
ExQueueWorkItem((PWORK_QUEUE_ITEM)&RequestWorkItem->Buffer, CriticalWorkQueue);
ExQueueWorkItem((PWORK_QUEUE_ITEM)&Request->Buffer, CriticalWorkQueue);
}
static VOID FspWqWorkRoutine(PVOID Context)
@ -78,9 +78,9 @@ static VOID FspWqWorkRoutine(PVOID Context)
PIRP Irp = Context;
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
PDEVICE_OBJECT DeviceObject = IrpSp->DeviceObject;
FSP_FSCTL_TRANSACT_REQ *RequestWorkItem = FspIrpRequest(Irp);
FSP_WQ_REQUEST_WORK *WorkRoutine = (FSP_WQ_REQUEST_WORK *)(UINT_PTR)
FspIopRequestContext(RequestWorkItem, FspWqRequestWorkRoutine);
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
FSP_IOP_REQUEST_WORK *WorkRoutine = (FSP_IOP_REQUEST_WORK *)(UINT_PTR)
FspIopRequestContext(Request, FspWqRequestWorkRoutine);
NTSTATUS Result;
IoSetTopLevelIrp(Irp);