mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 17:32:29 -05:00
sys: inline FspIopRequestContextAddress
This commit is contained in:
parent
965c86b79b
commit
8870ebc7f0
@ -573,12 +573,24 @@ enum
|
|||||||
FspIopPostWorkRequestFunnel(D, R, TRUE)
|
FspIopPostWorkRequestFunnel(D, R, TRUE)
|
||||||
#define FspIopCompleteIrp(I, R) FspIopCompleteIrpEx(I, R, TRUE)
|
#define FspIopCompleteIrp(I, R) FspIopCompleteIrpEx(I, R, TRUE)
|
||||||
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 struct
|
||||||
|
{
|
||||||
|
FSP_IOP_REQUEST_FINI *RequestFini;
|
||||||
|
PVOID Context[4];
|
||||||
|
FSP_FSCTL_TRANSACT_RSP *Response;
|
||||||
|
__declspec(align(MEMORY_ALLOCATION_ALIGNMENT)) UINT8 RequestBuf[];
|
||||||
|
} FSP_FSCTL_TRANSACT_REQ_HEADER;
|
||||||
|
static inline
|
||||||
|
PVOID *FspIopRequestContextAddress(FSP_FSCTL_TRANSACT_REQ *Request, ULONG I)
|
||||||
|
{
|
||||||
|
FSP_FSCTL_TRANSACT_REQ_HEADER *RequestHeader = (PVOID)((PUINT8)Request - sizeof *RequestHeader);
|
||||||
|
return &RequestHeader->Context[I];
|
||||||
|
}
|
||||||
NTSTATUS FspIopCreateRequestFunnel(
|
NTSTATUS FspIopCreateRequestFunnel(
|
||||||
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini,
|
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini,
|
||||||
ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest);
|
ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest);
|
||||||
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
VOID FspIopResetRequest(FSP_FSCTL_TRANSACT_REQ *Request, FSP_IOP_REQUEST_FINI *RequestFini);
|
VOID FspIopResetRequest(FSP_FSCTL_TRANSACT_REQ *Request, FSP_IOP_REQUEST_FINI *RequestFini);
|
||||||
PVOID *FspIopRequestContextAddress(FSP_FSCTL_TRANSACT_REQ *Request, ULONG I);
|
|
||||||
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN BestEffort);
|
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN BestEffort);
|
||||||
VOID FspIopCompleteIrpEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceDereference);
|
VOID FspIopCompleteIrpEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceDereference);
|
||||||
|
@ -11,7 +11,6 @@ NTSTATUS FspIopCreateRequestFunnel(
|
|||||||
ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest);
|
ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest);
|
||||||
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
VOID FspIopResetRequest(FSP_FSCTL_TRANSACT_REQ *Request, FSP_IOP_REQUEST_FINI *RequestFini);
|
VOID FspIopResetRequest(FSP_FSCTL_TRANSACT_REQ *Request, FSP_IOP_REQUEST_FINI *RequestFini);
|
||||||
PVOID *FspIopRequestContextAddress(FSP_FSCTL_TRANSACT_REQ *Request, ULONG I);
|
|
||||||
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN AllocateIrpMustSucceed);
|
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN AllocateIrpMustSucceed);
|
||||||
static IO_COMPLETION_ROUTINE FspIopPostWorkRequestCompletion;
|
static IO_COMPLETION_ROUTINE FspIopPostWorkRequestCompletion;
|
||||||
@ -27,7 +26,6 @@ NTSTATUS FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response
|
|||||||
#pragma alloc_text(PAGE, FspIopCreateRequestFunnel)
|
#pragma alloc_text(PAGE, FspIopCreateRequestFunnel)
|
||||||
#pragma alloc_text(PAGE, FspIopDeleteRequest)
|
#pragma alloc_text(PAGE, FspIopDeleteRequest)
|
||||||
#pragma alloc_text(PAGE, FspIopResetRequest)
|
#pragma alloc_text(PAGE, FspIopResetRequest)
|
||||||
#pragma alloc_text(PAGE, FspIopRequestContextAddress)
|
|
||||||
#pragma alloc_text(PAGE, FspIopPostWorkRequestFunnel)
|
#pragma alloc_text(PAGE, FspIopPostWorkRequestFunnel)
|
||||||
#pragma alloc_text(PAGE, FspIopCompleteIrpEx)
|
#pragma alloc_text(PAGE, FspIopCompleteIrpEx)
|
||||||
#pragma alloc_text(PAGE, FspIopCompleteCanceledIrp)
|
#pragma alloc_text(PAGE, FspIopCompleteCanceledIrp)
|
||||||
@ -45,14 +43,6 @@ NTSTATUS FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response
|
|||||||
#define REQ_HEADER_ALIGNMASK 0
|
#define REQ_HEADER_ALIGNMASK 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
FSP_IOP_REQUEST_FINI *RequestFini;
|
|
||||||
PVOID Context[4];
|
|
||||||
FSP_FSCTL_TRANSACT_RSP *Response;
|
|
||||||
__declspec(align(MEMORY_ALLOCATION_ALIGNMENT)) UINT8 RequestBuf[];
|
|
||||||
} FSP_FSCTL_TRANSACT_REQ_HEADER;
|
|
||||||
|
|
||||||
NTSTATUS FspIopCreateRequestFunnel(
|
NTSTATUS FspIopCreateRequestFunnel(
|
||||||
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini,
|
PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini,
|
||||||
ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest)
|
ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest)
|
||||||
@ -139,15 +129,6 @@ VOID FspIopResetRequest(FSP_FSCTL_TRANSACT_REQ *Request, FSP_IOP_REQUEST_FINI *R
|
|||||||
RequestHeader->RequestFini = RequestFini;
|
RequestHeader->RequestFini = RequestFini;
|
||||||
}
|
}
|
||||||
|
|
||||||
PVOID *FspIopRequestContextAddress(FSP_FSCTL_TRANSACT_REQ *Request, ULONG I)
|
|
||||||
{
|
|
||||||
PAGED_CODE();
|
|
||||||
|
|
||||||
FSP_FSCTL_TRANSACT_REQ_HEADER *RequestHeader = (PVOID)((PUINT8)Request - sizeof *RequestHeader);
|
|
||||||
|
|
||||||
return &RequestHeader->Context[I];
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
NTSTATUS FspIopPostWorkRequestFunnel(PDEVICE_OBJECT DeviceObject,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN BestEffort)
|
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN BestEffort)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user