mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-14 15:52:47 -05:00
sys, dll: IRP_MJ_QUERY_INFORMATION
This commit is contained in:
@ -24,7 +24,7 @@ FSP_API NTSTATUS FspFileSystemSendCleanupResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
|
||||
memset(&Response, 0, sizeof Response);
|
||||
Response.Size = sizeof Response;
|
||||
Response.Kind = Request->Kind;
|
||||
Response.Kind = FspFsctlTransactCleanupKind;
|
||||
Response.Hint = Request->Hint;
|
||||
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||
Response.IoStatus.Information = 0;
|
||||
|
@ -23,7 +23,7 @@ FSP_API NTSTATUS FspFileSystemSendCloseResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
|
||||
memset(&Response, 0, sizeof Response);
|
||||
Response.Size = sizeof Response;
|
||||
Response.Kind = Request->Kind;
|
||||
Response.Kind = FspFsctlTransactCloseKind;
|
||||
Response.Hint = Request->Hint;
|
||||
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||
Response.IoStatus.Information = 0;
|
||||
|
@ -574,7 +574,7 @@ FSP_API NTSTATUS FspFileSystemSendCreateResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
|
||||
memset(&Response, 0, sizeof Response);
|
||||
Response.Size = sizeof Response;
|
||||
Response.Kind = Request->Kind;
|
||||
Response.Kind = FspFsctlTransactCreateKind;
|
||||
Response.Hint = Request->Hint;
|
||||
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||
Response.IoStatus.Information = Information;
|
||||
@ -592,7 +592,7 @@ FSP_API NTSTATUS FspFileSystemSendOverwriteResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
|
||||
memset(&Response, 0, sizeof Response);
|
||||
Response.Size = sizeof Response;
|
||||
Response.Kind = Request->Kind;
|
||||
Response.Kind = FspFsctlTransactOverwriteKind;
|
||||
Response.Hint = Request->Hint;
|
||||
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||
Response.IoStatus.Information = 0;
|
||||
|
39
src/dll/fileinfo.c
Normal file
39
src/dll/fileinfo.c
Normal file
@ -0,0 +1,39 @@
|
||||
/**
|
||||
* @file dll/close.c
|
||||
*
|
||||
* @copyright 2015 Bill Zissimopoulos
|
||||
*/
|
||||
|
||||
#include <dll/library.h>
|
||||
|
||||
FSP_API NTSTATUS FspFileSystemOpQueryInformation(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
{
|
||||
NTSTATUS Result;
|
||||
FSP_FSCTL_FILE_INFO FileInfo;
|
||||
|
||||
if (0 == FileSystem->Interface->GetInformation)
|
||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_DEVICE_REQUEST);
|
||||
|
||||
Result = FileSystem->Interface->GetInformation(FileSystem, Request,
|
||||
(PVOID)Request->Req.Close.UserContext, &FileInfo);
|
||||
if (!NT_SUCCESS(Result))
|
||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||
|
||||
return FspFileSystemSendQueryInformationResponse(FileSystem, Request, &FileInfo);
|
||||
}
|
||||
|
||||
FSP_API NTSTATUS FspFileSystemSendQueryInformationResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, const FSP_FSCTL_FILE_INFO *FileInfo)
|
||||
{
|
||||
FSP_FSCTL_TRANSACT_RSP Response;
|
||||
|
||||
memset(&Response, 0, sizeof Response);
|
||||
Response.Size = sizeof Response;
|
||||
Response.Kind = FspFsctlTransactCloseKind;
|
||||
Response.Hint = Request->Hint;
|
||||
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||
Response.IoStatus.Information = 0;
|
||||
Response.Rsp.QueryInformation.FileInfo = *FileInfo;
|
||||
return FspFileSystemSendResponse(FileSystem, &Response);
|
||||
}
|
Reference in New Issue
Block a user