mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
sys: request work item refactoring
This commit is contained in:
parent
1e93f0d10d
commit
becfd2e1c5
@ -679,9 +679,9 @@ VOID FspMetaCacheInvalidateItem(FSP_META_CACHE *MetaCache, UINT64 ItemIndex);
|
|||||||
#define FSP_FSCTL_TRANSACT_REQ_ALIGNMENT 16
|
#define FSP_FSCTL_TRANSACT_REQ_ALIGNMENT 16
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
FspIopCreateRequestMustSucceed = 0x01,
|
FspIopCreateRequestMustSucceedFlag = 0x01,
|
||||||
FspIopCreateRequestNonPaged = 0x02,
|
FspIopCreateRequestNonPagedFlag = 0x02,
|
||||||
FspIopCreateRequestWorkItem = 0x04,
|
FspIopCreateRequestWorkItemFlag = 0x04,
|
||||||
};
|
};
|
||||||
typedef VOID FSP_IOP_REQUEST_FINI(FSP_FSCTL_TRANSACT_REQ *Request, PVOID Context[4]);
|
typedef VOID FSP_IOP_REQUEST_FINI(FSP_FSCTL_TRANSACT_REQ *Request, PVOID Context[4]);
|
||||||
typedef NTSTATUS FSP_IOP_REQUEST_WORK(
|
typedef NTSTATUS FSP_IOP_REQUEST_WORK(
|
||||||
@ -742,13 +742,13 @@ VOID FspIrpDeleteRequest(PIRP Irp)
|
|||||||
#define FspIopCreateRequest(I, F, E, P) \
|
#define FspIopCreateRequest(I, F, E, P) \
|
||||||
FspIopCreateRequestFunnel(I, F, E, 0, 0, P)
|
FspIopCreateRequestFunnel(I, F, E, 0, 0, P)
|
||||||
#define FspIopCreateRequestMustSucceed(I, F, E, P)\
|
#define FspIopCreateRequestMustSucceed(I, F, E, P)\
|
||||||
FspIopCreateRequestFunnel(I, F, E, 0, FspIopCreateRequestMustSucceed, P)
|
FspIopCreateRequestFunnel(I, F, E, 0, FspIopCreateRequestMustSucceedFlag, P)
|
||||||
#define FspIopCreateRequestEx(I, F, E, RF, P)\
|
#define FspIopCreateRequestEx(I, F, E, RF, P)\
|
||||||
FspIopCreateRequestFunnel(I, F, E, RF, 0, P)
|
FspIopCreateRequestFunnel(I, F, E, RF, 0, P)
|
||||||
#define FspIopCreateRequestMustSucceedEx(I, F, E, RF, P)\
|
#define FspIopCreateRequestMustSucceedEx(I, F, E, RF, P)\
|
||||||
FspIopCreateRequestFunnel(I, F, E, RF, FspIopCreateRequestMustSucceed, P)
|
FspIopCreateRequestFunnel(I, F, E, RF, FspIopCreateRequestMustSucceedFlag, P)
|
||||||
#define FspIopCreateRequestAndWorkItem(I, E, RF, P)\
|
#define FspIopCreateRequestAndWorkItem(I, E, RF, P)\
|
||||||
FspIopCreateRequestFunnel(I, 0, E, RF, FspIopCreateRequestWorkItem, P)
|
FspIopCreateRequestFunnel(I, 0, E, RF, FspIopCreateRequestWorkItemFlag, P)
|
||||||
#define FspIopRequestContext(Request, I)\
|
#define FspIopRequestContext(Request, I)\
|
||||||
(*FspIopRequestContextAddress(Request, I))
|
(*FspIopRequestContextAddress(Request, I))
|
||||||
#define FspIopPostWorkRequest(D, R) FspIopPostWorkRequestFunnel(D, R, FALSE)
|
#define FspIopPostWorkRequest(D, R) FspIopPostWorkRequestFunnel(D, R, FALSE)
|
||||||
|
@ -74,14 +74,14 @@ NTSTATUS FspIopCreateRequestFunnel(
|
|||||||
if (FSP_FSCTL_TRANSACT_REQ_SIZEMAX < sizeof *Request + ExtraSize)
|
if (FSP_FSCTL_TRANSACT_REQ_SIZEMAX < sizeof *Request + ExtraSize)
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
if (FlagOn(Flags, FspIopCreateRequestMustSucceed))
|
if (FlagOn(Flags, FspIopCreateRequestMustSucceedFlag))
|
||||||
{
|
{
|
||||||
RequestHeader = FspAllocatePoolMustSucceed(
|
RequestHeader = FspAllocatePoolMustSucceed(
|
||||||
FlagOn(Flags, FspIopCreateRequestNonPaged) ? NonPagedPool : PagedPool,
|
FlagOn(Flags, FspIopCreateRequestNonPagedFlag) ? NonPagedPool : PagedPool,
|
||||||
sizeof *RequestHeader + sizeof *Request + ExtraSize + REQ_HEADER_ALIGN_OVERHEAD,
|
sizeof *RequestHeader + sizeof *Request + ExtraSize + REQ_HEADER_ALIGN_OVERHEAD,
|
||||||
FSP_ALLOC_INTERNAL_TAG);
|
FSP_ALLOC_INTERNAL_TAG);
|
||||||
|
|
||||||
if (FlagOn(Flags, FspIopCreateRequestWorkItem))
|
if (FlagOn(Flags, FspIopCreateRequestWorkItemFlag))
|
||||||
{
|
{
|
||||||
RequestWorkItem = FspAllocatePoolMustSucceed(
|
RequestWorkItem = FspAllocatePoolMustSucceed(
|
||||||
NonPagedPool, sizeof *RequestWorkItem, FSP_ALLOC_INTERNAL_TAG);
|
NonPagedPool, sizeof *RequestWorkItem, FSP_ALLOC_INTERNAL_TAG);
|
||||||
@ -92,13 +92,13 @@ NTSTATUS FspIopCreateRequestFunnel(
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
RequestHeader = ExAllocatePoolWithTag(
|
RequestHeader = ExAllocatePoolWithTag(
|
||||||
FlagOn(Flags, FspIopCreateRequestNonPaged) ? NonPagedPool : PagedPool,
|
FlagOn(Flags, FspIopCreateRequestNonPagedFlag) ? NonPagedPool : PagedPool,
|
||||||
sizeof *RequestHeader + sizeof *Request + ExtraSize + REQ_HEADER_ALIGN_OVERHEAD,
|
sizeof *RequestHeader + sizeof *Request + ExtraSize + REQ_HEADER_ALIGN_OVERHEAD,
|
||||||
FSP_ALLOC_INTERNAL_TAG);
|
FSP_ALLOC_INTERNAL_TAG);
|
||||||
if (0 == RequestHeader)
|
if (0 == RequestHeader)
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
if (FlagOn(Flags, FspIopCreateRequestWorkItem))
|
if (FlagOn(Flags, FspIopCreateRequestWorkItemFlag))
|
||||||
{
|
{
|
||||||
RequestWorkItem = ExAllocatePoolWithTag(
|
RequestWorkItem = ExAllocatePoolWithTag(
|
||||||
NonPagedPool, sizeof *RequestWorkItem, FSP_ALLOC_INTERNAL_TAG);
|
NonPagedPool, sizeof *RequestWorkItem, FSP_ALLOC_INTERNAL_TAG);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user