mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 01:13:04 -05:00
sys: FspCompleteRequest
This commit is contained in:
parent
8bc5809dca
commit
50f2ba8cee
@ -80,14 +80,13 @@
|
||||
NtStatusSym(Result), \
|
||||
!NT_SUCCESS(Result) ? 0 : Irp->IoStatus.Information);\
|
||||
if (STATUS_PENDING == Result) \
|
||||
IoMarkIrpPending(Irp); \
|
||||
{\
|
||||
ASSERT(FspFsvrtDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind);\
|
||||
FspIoqPostIrp(&FspFsvrtDeviceExtension(DeviceObject)->Ioq, Irp);\
|
||||
/* also marks the IRP pending */\
|
||||
}\
|
||||
else \
|
||||
{ \
|
||||
if (!NT_SUCCESS(Result)) \
|
||||
Irp->IoStatus.Information = 0;\
|
||||
Irp->IoStatus.Status = Result;\
|
||||
IoCompleteRequest(Irp, FSP_IO_INCREMENT);\
|
||||
} \
|
||||
FspCompleteRequest(Irp, Result);\
|
||||
); \
|
||||
return Result
|
||||
#define FSP_ENTER_BOOL(...) \
|
||||
@ -208,6 +207,7 @@ FSP_FSVOL_DEVICE_EXTENSION *FspFsvolDeviceExtension(PDEVICE_OBJECT DeviceObject)
|
||||
}
|
||||
|
||||
/* misc */
|
||||
VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result);
|
||||
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||
NTSTATUS FspSecuritySubjectContextAccessCheck(
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode);
|
||||
|
@ -144,9 +144,7 @@ static VOID FspIoqProcessReleaseLock(PIO_CSQ IoCsq, KIRQL Irql)
|
||||
|
||||
static VOID FspIoqCompleteCanceledIrp(PIO_CSQ IoCsq, PIRP Irp)
|
||||
{
|
||||
Irp->IoStatus.Status = STATUS_CANCELLED;
|
||||
Irp->IoStatus.Information = 0;
|
||||
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
||||
FspCompleteRequest(Irp, STATUS_CANCELLED);
|
||||
}
|
||||
|
||||
VOID FspIoqInitialize(FSP_IOQ *Ioq)
|
||||
@ -203,7 +201,7 @@ VOID FspIoqCancelAll(FSP_IOQ *Ioq)
|
||||
{
|
||||
PIRP Irp;
|
||||
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->PendingIoCsq, 0)))
|
||||
FspIoqCompleteCanceledIrp(&Ioq->PendingIoCsq, Irp);
|
||||
FspCompleteRequest(Irp, STATUS_CANCELLED);
|
||||
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->ProcessIoCsq, 0)))
|
||||
FspIoqCompleteCanceledIrp(&Ioq->ProcessIoCsq, Irp);
|
||||
FspCompleteRequest(Irp, STATUS_CANCELLED);
|
||||
}
|
||||
|
@ -6,15 +6,27 @@
|
||||
|
||||
#include <sys/driver.h>
|
||||
|
||||
NTSTATUS CreateGuid(GUID *Guid);
|
||||
NTSTATUS SecuritySubjectContextAccessCheck(
|
||||
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||
NTSTATUS FspSecuritySubjectContextAccessCheck(
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode);
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, CreateGuid)
|
||||
#pragma alloc_text(PAGE, SecuritySubjectContextAccessCheck)
|
||||
#pragma alloc_text(PAGE, FspCreateGuid)
|
||||
#pragma alloc_text(PAGE, FspSecuritySubjectContextAccessCheck)
|
||||
#endif
|
||||
|
||||
VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result)
|
||||
{
|
||||
// !PAGED_CODE();
|
||||
|
||||
ASSERT(STATUS_PENDING != Result);
|
||||
|
||||
if (!NT_SUCCESS(Result))
|
||||
Irp->IoStatus.Information = 0;
|
||||
Irp->IoStatus.Status = Result;
|
||||
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
||||
}
|
||||
|
||||
NTSTATUS FspCreateGuid(GUID *Guid)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
Loading…
x
Reference in New Issue
Block a user