mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
sys: FSP_FSCTL_TRANSACT[_BATCH]_BUFFER_SIZEMIN
This commit is contained in:
parent
d1fe27f996
commit
f61aa5a9bb
@ -41,9 +41,10 @@ extern const __declspec(selectany) GUID FspFsvrtDeviceClassGuid =
|
||||
|
||||
#define FSP_FSCTL_VOLUME_NAME_SIZEMAX 128
|
||||
|
||||
#define FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMIN 16384 /* checked by driver! */
|
||||
#define FSP_FSCTL_TRANSACT_REQ_SIZEMAX (4096 - 64) /* 64: size for internal request header */
|
||||
#define FSP_FSCTL_TRANSACT_RSP_SIZEMAX (4096 - 64) /* symmetry! */
|
||||
#define FSP_FSCTL_TRANSACT_BATCH_BUFFER_SIZEMIN 16384
|
||||
#define FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN FSP_FSCTL_TRANSACT_REQ_SIZEMAX
|
||||
|
||||
/* volume/file metadata */
|
||||
typedef struct
|
||||
|
@ -70,13 +70,13 @@ FSP_API NTSTATUS FspFileSystemLoop(FSP_FILE_SYSTEM *FileSystem)
|
||||
SIZE_T RequestBufSize;
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, *NextRequest;
|
||||
|
||||
RequestBuf = MemAlloc(FSP_FSCTL_TRANSACT_REQ_SIZEMAX);
|
||||
RequestBuf = MemAlloc(FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN);
|
||||
if (0 == RequestBuf)
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
RequestBufSize = FSP_FSCTL_TRANSACT_REQ_SIZEMAX;
|
||||
RequestBufSize = FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN;
|
||||
Result = FspFsctlTransact(FileSystem->VolumeHandle, 0, 0, RequestBuf, &RequestBufSize, FALSE);
|
||||
if (!NT_SUCCESS(Result))
|
||||
goto exit;
|
||||
|
@ -513,9 +513,9 @@ NTSTATUS FspVolumeTransact(
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
if (0 != OutputBufferLength &&
|
||||
((FSP_FSCTL_TRANSACT == ControlCode &&
|
||||
FSP_FSCTL_TRANSACT_REQ_SIZEMAX > OutputBufferLength) ||
|
||||
FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN > OutputBufferLength) ||
|
||||
(FSP_FSCTL_TRANSACT_BATCH == ControlCode &&
|
||||
FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMIN > OutputBufferLength)))
|
||||
FSP_FSCTL_TRANSACT_BATCH_BUFFER_SIZEMIN > OutputBufferLength)))
|
||||
return STATUS_BUFFER_TOO_SMALL;
|
||||
|
||||
if (!FspDeviceReference(FsvolDeviceObject))
|
||||
|
@ -173,7 +173,7 @@ void mount_volume_transact_dotest(PWSTR DeviceName, PWSTR Prefix)
|
||||
|
||||
Sleep(1000); /* give some time to the thread to execute */
|
||||
|
||||
FSP_FSCTL_DECLSPEC_ALIGN UINT8 RequestBuf[FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMIN];
|
||||
FSP_FSCTL_DECLSPEC_ALIGN UINT8 RequestBuf[FSP_FSCTL_TRANSACT_BATCH_BUFFER_SIZEMIN];
|
||||
FSP_FSCTL_DECLSPEC_ALIGN UINT8 ResponseBuf[FSP_FSCTL_TRANSACT_RSP_SIZEMAX];
|
||||
UINT8 *RequestBufEnd;
|
||||
UINT8 *ResponseBufEnd = ResponseBuf + sizeof ResponseBuf;
|
||||
|
@ -168,7 +168,7 @@ void timeout_transact_dotest(PWSTR DeviceName, PWSTR Prefix)
|
||||
ASSERT(INVALID_HANDLE_VALUE != VolumeHandle);
|
||||
|
||||
|
||||
FSP_FSCTL_DECLSPEC_ALIGN UINT8 RequestBuf[FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMIN];
|
||||
FSP_FSCTL_DECLSPEC_ALIGN UINT8 RequestBuf[FSP_FSCTL_TRANSACT_BATCH_BUFFER_SIZEMIN];
|
||||
FSP_FSCTL_DECLSPEC_ALIGN UINT8 ResponseBuf[FSP_FSCTL_TRANSACT_RSP_SIZEMAX];
|
||||
UINT8 *RequestBufEnd;
|
||||
UINT8 *ResponseBufEnd = ResponseBuf + sizeof ResponseBuf;
|
||||
|
Loading…
x
Reference in New Issue
Block a user