mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 01:13:04 -05:00
dll: WIP
This commit is contained in:
parent
9d73f15b0f
commit
0da55d012c
@ -99,26 +99,35 @@ static NTSTATUS FspFileSystemOpCreate_FileOpenIf(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
{
|
{
|
||||||
if (STATUS_OBJECT_NAME_NOT_FOUND != Result)
|
if (STATUS_OBJECT_NAME_NOT_FOUND != Result)
|
||||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||||
|
|
||||||
Create = TRUE;
|
Create = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Create)
|
||||||
|
{
|
||||||
|
Result = FileSystem->Interface->FileOpen(FileSystem, Request, &FileNode);
|
||||||
|
{
|
||||||
|
if (STATUS_OBJECT_NAME_NOT_FOUND != Result)
|
||||||
|
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||||
|
Create = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Create)
|
||||||
|
{
|
||||||
Result = FspAccessCheck(FileSystem, Request, FALSE,
|
Result = FspAccessCheck(FileSystem, Request, FALSE,
|
||||||
(Request->Req.Create.CreateOptions & FILE_DIRECTORY_FILE) ?
|
(Request->Req.Create.CreateOptions & FILE_DIRECTORY_FILE) ?
|
||||||
FILE_ADD_SUBDIRECTORY : FILE_ADD_FILE,
|
FILE_ADD_SUBDIRECTORY : FILE_ADD_FILE,
|
||||||
&GrantedAccess);
|
&GrantedAccess);
|
||||||
if (!NT_SUCCESS(Result))
|
if (!NT_SUCCESS(Result))
|
||||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||||
}
|
|
||||||
|
|
||||||
if (Create)
|
|
||||||
{
|
|
||||||
Result = FileSystem->Interface->FileCreate(FileSystem, Request, &FileNode);
|
Result = FileSystem->Interface->FileCreate(FileSystem, Request, &FileNode);
|
||||||
memset(&FileNode->ShareAccess, 0, sizeof FileNode->ShareAccess);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Result = FileSystem->Interface->FileOpen(FileSystem, Request, &FileNode);
|
|
||||||
if (!NT_SUCCESS(Result))
|
if (!NT_SUCCESS(Result))
|
||||||
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
|
||||||
|
|
||||||
|
memset(&FileNode->ShareAccess, 0, sizeof FileNode->ShareAccess);
|
||||||
|
}
|
||||||
|
|
||||||
Result = FspShareCheck(FileSystem, GrantedAccess, Request->Req.Create.ShareAccess, FileNode);
|
Result = FspShareCheck(FileSystem, GrantedAccess, Request->Req.Create.ShareAccess, FileNode);
|
||||||
if (!NT_SUCCESS(Result))
|
if (!NT_SUCCESS(Result))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user