From 8870ebc7f08629c3d594750dd1530dff4955313f Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Fri, 18 Mar 2016 15:59:56 -0700 Subject: [PATCH] sys: inline FspIopRequestContextAddress --- src/sys/driver.h | 14 +++++++++++++- src/sys/iop.c | 19 ------------------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/sys/driver.h b/src/sys/driver.h index 74c90854..d419652f 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -573,12 +573,24 @@ enum FspIopPostWorkRequestFunnel(D, 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 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( PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini, ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest); VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request); 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, FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN BestEffort); VOID FspIopCompleteIrpEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceDereference); diff --git a/src/sys/iop.c b/src/sys/iop.c index e725c481..53a386d1 100644 --- a/src/sys/iop.c +++ b/src/sys/iop.c @@ -11,7 +11,6 @@ NTSTATUS FspIopCreateRequestFunnel( ULONG Flags, FSP_FSCTL_TRANSACT_REQ **PRequest); VOID FspIopDeleteRequest(FSP_FSCTL_TRANSACT_REQ *Request); 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, FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN AllocateIrpMustSucceed); 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, FspIopDeleteRequest) #pragma alloc_text(PAGE, FspIopResetRequest) -#pragma alloc_text(PAGE, FspIopRequestContextAddress) #pragma alloc_text(PAGE, FspIopPostWorkRequestFunnel) #pragma alloc_text(PAGE, FspIopCompleteIrpEx) #pragma alloc_text(PAGE, FspIopCompleteCanceledIrp) @@ -45,14 +43,6 @@ NTSTATUS FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response #define REQ_HEADER_ALIGNMASK 0 #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( PIRP Irp, PUNICODE_STRING FileName, ULONG ExtraSize, FSP_IOP_REQUEST_FINI *RequestFini, 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; } -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, FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN BestEffort) {