mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
dll: WIP
This commit is contained in:
parent
5e09c1e045
commit
b3f9e7e32d
@ -33,6 +33,8 @@ typedef struct _FSP_FILE_SYSTEM_INTERFACE
|
||||
FSP_FSCTL_TRANSACT_REQ *, DWORD, PDWORD);
|
||||
NTSTATUS (*QuerySecurity)(FSP_FILE_SYSTEM *,
|
||||
PWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, SIZE_T *);
|
||||
NTSTATUS (*FileCreate)(FSP_FILE_SYSTEM *,
|
||||
FSP_FSCTL_TRANSACT_REQ *, PVOID *File);
|
||||
} FSP_FILE_SYSTEM_INTERFACE;
|
||||
typedef struct _FSP_FILE_SYSTEM
|
||||
{
|
||||
@ -113,6 +115,12 @@ FSP_API NTSTATUS FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_API NTSTATUS FspFileSystemSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result);
|
||||
|
||||
/*
|
||||
* File System Operations
|
||||
*/
|
||||
FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
|
||||
/*
|
||||
* Access Checks
|
||||
*/
|
||||
|
@ -6,22 +6,27 @@
|
||||
|
||||
#include <dll/library.h>
|
||||
|
||||
#if 0
|
||||
static NTSTATUS FspFileSystemOpCreate_FileCreate(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
{
|
||||
if (0 == FileSystem->Interface->FileCreate)
|
||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, STATUS_NOT_IMPLEMENTED);
|
||||
|
||||
NTSTATUS Result;
|
||||
DWORD GrantedAccess;
|
||||
PVOID File;
|
||||
FSP_FSCTL_TRANSACT_RSP Response;
|
||||
|
||||
Result = FspAccessCheck(FileSystem, Request, TRUE, &GrantedAccess);
|
||||
Result = FspAccessCheck(FileSystem, Request, TRUE,
|
||||
(Request->Req.Create.CreateOptions & FILE_DIRECTORY_FILE) ?
|
||||
FILE_ADD_SUBDIRECTORY : FILE_ADD_FILE,
|
||||
&GrantedAccess);
|
||||
if (!NT_SUCCESS(Result))
|
||||
return FspSendResponseWithStatus(FileSystem, Request, Result);
|
||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||
|
||||
Result = FileSystem->FileCreate(FileSystem, Request, &File);
|
||||
Result = FileSystem->Interface->FileCreate(FileSystem, Request, &File);
|
||||
if (!NT_SUCCESS(Result))
|
||||
return FspSendResponseWithStatus(FileSystem, Request, Result);
|
||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||
|
||||
/* !!!: set share access */
|
||||
|
||||
@ -33,12 +38,14 @@ static NTSTATUS FspFileSystemOpCreate_FileCreate(FSP_FILE_SYSTEM *FileSystem,
|
||||
Response.IoStatus.Information = FILE_CREATED;
|
||||
Response.Rsp.Create.Opened.UserContext = (UINT_PTR)File;
|
||||
Response.Rsp.Create.Opened.GrantedAccess = GrantedAccess;
|
||||
return FspSendResponse(FileSystem, &Response);
|
||||
return FspFileSystemSendResponse(FileSystem, &Response);
|
||||
}
|
||||
|
||||
static NTSTATUS FspFileSystemOpCreate_FileOpen(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
{
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
#if 0
|
||||
NTSTATUS Result;
|
||||
DWORD GrantedAccess;
|
||||
PVOID File;
|
||||
@ -68,24 +75,25 @@ static NTSTATUS FspFileSystemOpCreate_FileOpen(FSP_FILE_SYSTEM *FileSystem,
|
||||
Response.Rsp.Create.Opened.UserContext = (UINT_PTR)File;
|
||||
Response.Rsp.Create.Opened.GrantedAccess = GrantedAccess;
|
||||
return FspSendResponse(FileSystem, &Response);
|
||||
#endif
|
||||
}
|
||||
|
||||
static NTSTATUS FspFileSystemOpCreate_FileOpenIf(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static NTSTATUS FspFileSystemOpCreate_FileOverwrite(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN Supersede)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static NTSTATUS FspFileSystemOpCreate_FileOverwriteIf(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem,
|
||||
@ -106,7 +114,6 @@ FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem,
|
||||
case FILE_OVERWRITE_IF:
|
||||
return FspFileSystemOpCreate_FileOverwriteIf(FileSystem, Request);
|
||||
default:
|
||||
return FspSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_PARAMETER);
|
||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_PARAMETER);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -40,7 +40,7 @@ FSP_API NTSTATUS FspFileSystemCreate(PWSTR DevicePath,
|
||||
}
|
||||
|
||||
FileSystem->Dispatcher = FspFileSystemDirectDispatcher;
|
||||
FileSystem->Operations[FspFsctlTransactCreateKind] = 0;
|
||||
FileSystem->Operations[FspFsctlTransactCreateKind] = FspFileSystemOpCreate;
|
||||
// !!!: ...
|
||||
FileSystem->Interface = Interface;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user