sys: FspIopCompleteRequestEx

This commit is contained in:
Bill Zissimopoulos 2015-12-03 21:53:43 -08:00
parent 6bfb23e77d
commit b72adb6c97
2 changed files with 11 additions and 4 deletions

View File

@ -83,6 +83,7 @@
#define FSP_ENTER_MJ(...) \
NTSTATUS Result = STATUS_SUCCESS; \
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);\
BOOLEAN fsp_device_release = FALSE; \
FSP_ENTER_(__VA_ARGS__); \
do \
{ \
@ -91,6 +92,7 @@
Result = STATUS_CANCELLED; \
goto fsp_leave_label; \
} \
fsp_device_release = TRUE; \
} while (0,0)
#define FSP_LEAVE_MJ(fmt, ...) \
FSP_LEAVE_( \
@ -122,7 +124,7 @@
} \
} \
else \
FspIopCompleteRequest(Irp, Result);\
FspIopCompleteRequestEx(Irp, Result, fsp_device_release);\
); \
return Result
#define FSP_ENTER_IOC(...) \
@ -248,7 +250,11 @@ PIRP FspIoqEndProcessingIrp(FSP_IOQ *Ioq, UINT_PTR IrpHint);
/* I/O processing */
NTSTATUS FspIopCreateRequest(
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);
/* device management */

View File

@ -51,7 +51,7 @@ NTSTATUS FspIopCreateRequest(
return STATUS_SUCCESS;
}
VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result)
VOID FspIopCompleteRequestEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceRelease)
{
// !PAGED_CODE();
@ -70,7 +70,8 @@ VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result)
Irp->IoStatus.Status = Result;
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
FspDeviceRelease(DeviceObject);
if (DeviceRelease)
FspDeviceRelease(DeviceObject);
}
VOID FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response)