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), \
|
NtStatusSym(Result), \
|
||||||
!NT_SUCCESS(Result) ? 0 : Irp->IoStatus.Information);\
|
!NT_SUCCESS(Result) ? 0 : Irp->IoStatus.Information);\
|
||||||
if (STATUS_PENDING == Result) \
|
if (STATUS_PENDING == Result) \
|
||||||
IoMarkIrpPending(Irp); \
|
|
||||||
else \
|
|
||||||
{\
|
{\
|
||||||
if (!NT_SUCCESS(Result)) \
|
ASSERT(FspFsvrtDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind);\
|
||||||
Irp->IoStatus.Information = 0;\
|
FspIoqPostIrp(&FspFsvrtDeviceExtension(DeviceObject)->Ioq, Irp);\
|
||||||
Irp->IoStatus.Status = Result;\
|
/* also marks the IRP pending */\
|
||||||
IoCompleteRequest(Irp, FSP_IO_INCREMENT);\
|
|
||||||
}\
|
}\
|
||||||
|
else \
|
||||||
|
FspCompleteRequest(Irp, Result);\
|
||||||
); \
|
); \
|
||||||
return Result
|
return Result
|
||||||
#define FSP_ENTER_BOOL(...) \
|
#define FSP_ENTER_BOOL(...) \
|
||||||
@ -208,6 +207,7 @@ FSP_FSVOL_DEVICE_EXTENSION *FspFsvolDeviceExtension(PDEVICE_OBJECT DeviceObject)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* misc */
|
/* misc */
|
||||||
|
VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result);
|
||||||
NTSTATUS FspCreateGuid(GUID *Guid);
|
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||||
NTSTATUS FspSecuritySubjectContextAccessCheck(
|
NTSTATUS FspSecuritySubjectContextAccessCheck(
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode);
|
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)
|
static VOID FspIoqCompleteCanceledIrp(PIO_CSQ IoCsq, PIRP Irp)
|
||||||
{
|
{
|
||||||
Irp->IoStatus.Status = STATUS_CANCELLED;
|
FspCompleteRequest(Irp, STATUS_CANCELLED);
|
||||||
Irp->IoStatus.Information = 0;
|
|
||||||
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FspIoqInitialize(FSP_IOQ *Ioq)
|
VOID FspIoqInitialize(FSP_IOQ *Ioq)
|
||||||
@ -203,7 +201,7 @@ VOID FspIoqCancelAll(FSP_IOQ *Ioq)
|
|||||||
{
|
{
|
||||||
PIRP Irp;
|
PIRP Irp;
|
||||||
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->PendingIoCsq, 0)))
|
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->PendingIoCsq, 0)))
|
||||||
FspIoqCompleteCanceledIrp(&Ioq->PendingIoCsq, Irp);
|
FspCompleteRequest(Irp, STATUS_CANCELLED);
|
||||||
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->ProcessIoCsq, 0)))
|
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->ProcessIoCsq, 0)))
|
||||||
FspIoqCompleteCanceledIrp(&Ioq->ProcessIoCsq, Irp);
|
FspCompleteRequest(Irp, STATUS_CANCELLED);
|
||||||
}
|
}
|
||||||
|
@ -6,15 +6,27 @@
|
|||||||
|
|
||||||
#include <sys/driver.h>
|
#include <sys/driver.h>
|
||||||
|
|
||||||
NTSTATUS CreateGuid(GUID *Guid);
|
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||||
NTSTATUS SecuritySubjectContextAccessCheck(
|
NTSTATUS FspSecuritySubjectContextAccessCheck(
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode);
|
PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode);
|
||||||
|
|
||||||
#ifdef ALLOC_PRAGMA
|
#ifdef ALLOC_PRAGMA
|
||||||
#pragma alloc_text(PAGE, CreateGuid)
|
#pragma alloc_text(PAGE, FspCreateGuid)
|
||||||
#pragma alloc_text(PAGE, SecuritySubjectContextAccessCheck)
|
#pragma alloc_text(PAGE, FspSecuritySubjectContextAccessCheck)
|
||||||
#endif
|
#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)
|
NTSTATUS FspCreateGuid(GUID *Guid)
|
||||||
{
|
{
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user