mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 08:53:01 -05:00
sys: FspIopCompleteRequestEx
This commit is contained in:
parent
6bfb23e77d
commit
b72adb6c97
@ -83,6 +83,7 @@
|
|||||||
#define FSP_ENTER_MJ(...) \
|
#define FSP_ENTER_MJ(...) \
|
||||||
NTSTATUS Result = STATUS_SUCCESS; \
|
NTSTATUS Result = STATUS_SUCCESS; \
|
||||||
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);\
|
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);\
|
||||||
|
BOOLEAN fsp_device_release = FALSE; \
|
||||||
FSP_ENTER_(__VA_ARGS__); \
|
FSP_ENTER_(__VA_ARGS__); \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
@ -91,6 +92,7 @@
|
|||||||
Result = STATUS_CANCELLED; \
|
Result = STATUS_CANCELLED; \
|
||||||
goto fsp_leave_label; \
|
goto fsp_leave_label; \
|
||||||
} \
|
} \
|
||||||
|
fsp_device_release = TRUE; \
|
||||||
} while (0,0)
|
} while (0,0)
|
||||||
#define FSP_LEAVE_MJ(fmt, ...) \
|
#define FSP_LEAVE_MJ(fmt, ...) \
|
||||||
FSP_LEAVE_( \
|
FSP_LEAVE_( \
|
||||||
@ -122,7 +124,7 @@
|
|||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
FspIopCompleteRequest(Irp, Result);\
|
FspIopCompleteRequestEx(Irp, Result, fsp_device_release);\
|
||||||
); \
|
); \
|
||||||
return Result
|
return Result
|
||||||
#define FSP_ENTER_IOC(...) \
|
#define FSP_ENTER_IOC(...) \
|
||||||
@ -248,7 +250,11 @@ PIRP FspIoqEndProcessingIrp(FSP_IOQ *Ioq, UINT_PTR IrpHint);
|
|||||||
/* I/O processing */
|
/* I/O processing */
|
||||||
NTSTATUS FspIopCreateRequest(
|
NTSTATUS FspIopCreateRequest(
|
||||||
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_FSCTL_TRANSACT_REQ **PRequest);
|
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_FSCTL_TRANSACT_REQ **PRequest);
|
||||||
VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result);
|
VOID FspIopCompleteRequestEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceRelease);
|
||||||
|
static inline VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result)
|
||||||
|
{
|
||||||
|
FspIopCompleteRequestEx(Irp, Result, TRUE);
|
||||||
|
}
|
||||||
VOID FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response);
|
VOID FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response);
|
||||||
|
|
||||||
/* device management */
|
/* device management */
|
||||||
|
@ -51,7 +51,7 @@ NTSTATUS FspIopCreateRequest(
|
|||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result)
|
VOID FspIopCompleteRequestEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceRelease)
|
||||||
{
|
{
|
||||||
// !PAGED_CODE();
|
// !PAGED_CODE();
|
||||||
|
|
||||||
@ -70,6 +70,7 @@ VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result)
|
|||||||
Irp->IoStatus.Status = Result;
|
Irp->IoStatus.Status = Result;
|
||||||
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
||||||
|
|
||||||
|
if (DeviceRelease)
|
||||||
FspDeviceRelease(DeviceObject);
|
FspDeviceRelease(DeviceObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user