mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 08:53:01 -05:00
sys: complete functions may repost IRP by setting Result to STATUS_PENDING
This commit is contained in:
parent
cafa15f1e4
commit
9d9eb44f0b
@ -152,11 +152,14 @@ extern __declspec(selectany) int bpglobal = 1;
|
||||
(LONGLONG)Irp->IoStatus.Information);\
|
||||
if (STATUS_PENDING == Result) \
|
||||
{ \
|
||||
/* repost request! */ \
|
||||
FSP_FSVOL_DEVICE_EXTENSION *fsp_leave_FsvolDeviceExtension =\
|
||||
FspFsvolDeviceExtension(IrpSp->DeviceObject);\
|
||||
if (!FspIoqPostIrp(fsp_leave_FsvolDeviceExtension->Ioq, Irp, &Result))\
|
||||
FspIopCompleteIrp(Irp, Result);\
|
||||
if (0 == (IrpSp->Control & SL_PENDING_RETURNED))\
|
||||
{ \
|
||||
/* if the IRP has not been marked pending already */\
|
||||
FSP_FSVOL_DEVICE_EXTENSION *fsp_leave_FsvolDeviceExtension =\
|
||||
FspFsvolDeviceExtension(IrpSp->DeviceObject);\
|
||||
if (!FspIoqPostIrp(fsp_leave_FsvolDeviceExtension->Ioq, Irp, &Result))\
|
||||
FspIopCompleteIrp(Irp, Result);\
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
FspIopCompleteIrp(Irp, Result);\
|
||||
@ -389,6 +392,7 @@ NTSTATUS FspIopCreateRequestFunnel(
|
||||
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini,
|
||||
BOOLEAN MustSucceed,
|
||||
FSP_FSCTL_TRANSACT_REQ **PRequest);
|
||||
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
PVOID *FspIopRequestContextAddress(FSP_FSCTL_TRANSACT_REQ *Request, ULONG I);
|
||||
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN AllocateIrpMustSucceed);
|
||||
|
@ -10,7 +10,7 @@ NTSTATUS FspIopCreateRequestFunnel(
|
||||
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini,
|
||||
BOOLEAN MustSucceed,
|
||||
FSP_FSCTL_TRANSACT_REQ **PRequest);
|
||||
static VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
PVOID *FspIopRequestContextAddress(FSP_FSCTL_TRANSACT_REQ *Request, ULONG I);
|
||||
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN AllocateIrpMustSucceed);
|
||||
@ -129,7 +129,7 @@ NTSTATUS FspIopCreateRequestFunnel(
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user