diff --git a/src/sys/lockctl.c b/src/sys/lockctl.c index 5627362c..d99e040d 100644 --- a/src/sys/lockctl.c +++ b/src/sys/lockctl.c @@ -51,7 +51,7 @@ static NTSTATUS FspFsvolLockControlRetry( /* perform oplock check; we are only implementing Win7 behavior */ Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, - 0, FspWqOplockComplete, FspWqOplockPrepare); + (PVOID)(UINT_PTR)FspFsvolLockControlRetry, FspWqOplockComplete, FspWqOplockPrepare); if (STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Main); diff --git a/src/sys/wq.c b/src/sys/wq.c index 2b9e4005..5073d1f0 100644 --- a/src/sys/wq.c +++ b/src/sys/wq.c @@ -176,7 +176,10 @@ VOID FspWqOplockPrepare(PVOID Context, PIRP Irp) NTSTATUS Result; - Result = FspWqPrepareIrpWorkItem(Irp); + FSP_FSCTL_STATIC_ASSERT(sizeof(PVOID) == sizeof(VOID (*)(VOID)), + "Data and code pointers must have same size!"); + + Result = FspWqCreateAndPostIrpWorkItem(Irp, (FSP_IOP_REQUEST_WORK *)(UINT_PTR)Context, 0, TRUE); if (!NT_SUCCESS(Result)) /* * Only way to communicate failure is through ExRaiseStatus.