sys: renamed "main stream" to "main file"

This commit is contained in:
Bill Zissimopoulos 2016-10-02 16:57:15 -07:00
parent 5c3a82a074
commit 03df0a9c26
6 changed files with 78 additions and 78 deletions

View File

@ -168,7 +168,7 @@ static VOID FspFsvolCleanupRequestFini(FSP_FSCTL_TRANSACT_REQ *Request, PVOID Co
PFILE_OBJECT FileObject = IrpSp->FileObject; PFILE_OBJECT FileObject = IrpSp->FileObject;
FSP_FILE_NODE *FileNode = FileObject->FsContext; FSP_FILE_NODE *FileNode = FileObject->FsContext;
FSP_FILE_DESC *FileDesc = FileObject->FsContext2; FSP_FILE_DESC *FileDesc = FileObject->FsContext2;
HANDLE MainStreamHandle; HANDLE MainFileHandle;
ASSERT(FileNode == FileDesc->FileNode); ASSERT(FileNode == FileDesc->FileNode);
@ -176,12 +176,12 @@ static VOID FspFsvolCleanupRequestFini(FSP_FSCTL_TRANSACT_REQ *Request, PVOID Co
FspFileNodeCleanupComplete(FileNode, FileObject); FspFileNodeCleanupComplete(FileNode, FileObject);
MainStreamHandle = FileDesc->MainStreamHandle; MainFileHandle = FileDesc->MainFileHandle;
FileDesc->MainStreamHandle = 0; FileDesc->MainFileHandle = 0;
FspFileNodeReleaseOwner(FileNode, Main, Request); FspFileNodeReleaseOwner(FileNode, Main, Request);
FspMainStreamClose(MainStreamHandle, 0); FspMainFileClose(MainFileHandle, 0);
} }
NTSTATUS FspCleanup( NTSTATUS FspCleanup(

View File

@ -77,7 +77,7 @@ static NTSTATUS FspFsvolClose(
FspFileNodeClose(FileNode, FileObject); FspFileNodeClose(FileNode, FileObject);
/* delete the FileDesc and deref the FileNode; order is important (FileDesc has FileNode ref) */ /* delete the FileDesc and deref the FileNode; order is important (FileDesc has FileNode ref) */
FspFileDescDelete(FileDesc); /* this will also close the MainStreamObject if any */ FspFileDescDelete(FileDesc); /* this will also close the MainFileObject if any */
FspFileNodeDereference(FileNode); FspFileNodeDereference(FileNode);
/* /*

View File

@ -147,7 +147,7 @@ static NTSTATUS FspFsvolCreateNoLock(
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
UNICODE_STRING MainStreamName = { 0 }, StreamPart = { 0 }; UNICODE_STRING MainFileName = { 0 }, StreamPart = { 0 };
PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState; PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState;
ULONG CreateDisposition = (IrpSp->Parameters.Create.Options >> 24) & 0xff; ULONG CreateDisposition = (IrpSp->Parameters.Create.Options >> 24) & 0xff;
ULONG CreateOptions = IrpSp->Parameters.Create.Options; ULONG CreateOptions = IrpSp->Parameters.Create.Options;
@ -232,9 +232,9 @@ static NTSTATUS FspFsvolCreateNoLock(
(((PUINT8)StreamPart.Buffer + StreamPart.Length / sizeof(WCHAR)) - (((PUINT8)StreamPart.Buffer + StreamPart.Length / sizeof(WCHAR)) -
(PUINT8)FileName.Buffer - 1); (PUINT8)FileName.Buffer - 1);
MainStreamName.Length = MainStreamName.MaximumLength = (USHORT) MainFileName.Length = MainFileName.MaximumLength = (USHORT)
((PUINT8)StreamPart.Buffer - (PUINT8)FileName.Buffer - 1); ((PUINT8)StreamPart.Buffer - (PUINT8)FileName.Buffer - 1);
MainStreamName.Buffer = FileName.Buffer; MainFileName.Buffer = FileName.Buffer;
} }
/* is this a relative or absolute open? */ /* is this a relative or absolute open? */
@ -351,19 +351,19 @@ static NTSTATUS FspFsvolCreateNoLock(
return Result; return Result;
} }
/* if we have a non-empty stream part, open the main stream */ /* if we have a non-empty stream part, open the main file */
if (0 != StreamPart.Buffer) if (0 != StreamPart.Buffer)
{ {
Result = FspMainStreamOpen(FsvolDeviceObject, Result = FspMainFileOpen(FsvolDeviceObject,
&MainStreamName, CaseSensitive, &MainFileName, CaseSensitive,
CreateDisposition, CreateDisposition,
&FileDesc->MainStreamHandle, &FileDesc->MainFileHandle,
&FileDesc->MainStreamObject); &FileDesc->MainFileObject);
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))
goto main_stream_exit; goto main_stream_exit;
/* check that the main stream is one we recognize */ /* check that the main file is one we recognize */
if (!FspFileNodeIsValid(FileDesc->MainStreamObject->FsContext)) if (!FspFileNodeIsValid(FileDesc->MainFileObject->FsContext))
{ {
Result = STATUS_OBJECT_NAME_NOT_FOUND; Result = STATUS_OBJECT_NAME_NOT_FOUND;
goto main_stream_exit; goto main_stream_exit;
@ -383,8 +383,8 @@ static NTSTATUS FspFsvolCreateNoLock(
goto main_stream_exit; goto main_stream_exit;
} }
/* remember the the main stream node */ /* remember the main file node */
FileNode->MainStreamFileNode = FileDesc->MainStreamObject->FsContext; FileNode->MainFileNode = FileDesc->MainFileObject->FsContext;
Result = STATUS_SUCCESS; Result = STATUS_SUCCESS;

View File

@ -431,15 +431,15 @@ VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE
NTSTATUS FspCreateGuid(GUID *Guid); NTSTATUS FspCreateGuid(GUID *Guid);
NTSTATUS FspGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess, NTSTATUS FspGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess,
PULONG PFileNameIndex, PFILE_OBJECT *PFileObject, PDEVICE_OBJECT *PDeviceObject); PULONG PFileNameIndex, PFILE_OBJECT *PFileObject, PDEVICE_OBJECT *PDeviceObject);
NTSTATUS FspMainStreamOpen( NTSTATUS FspMainFileOpen(
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PUNICODE_STRING MainStreamName, BOOLEAN CaseSensitive, PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
ULONG Disposition, ULONG Disposition,
PHANDLE PMainStreamHandle, PHANDLE PMainFileHandle,
PFILE_OBJECT *PMainStreamObject); PFILE_OBJECT *PMainFileObject);
NTSTATUS FspMainStreamClose( NTSTATUS FspMainFileClose(
HANDLE MainStreamHandle, HANDLE MainFileHandle,
PFILE_OBJECT MainStreamObject); PFILE_OBJECT MainFileObject);
NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject, NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject,
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length); FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
NTSTATUS FspBufferUserBuffer(PIRP Irp, ULONG Length, LOCK_OPERATION Operation); NTSTATUS FspBufferUserBuffer(PIRP Irp, ULONG Length, LOCK_OPERATION Operation);
@ -916,8 +916,8 @@ typedef struct FSP_FILE_NODE
LONG OpenCount; /* ContextTable ref count */ LONG OpenCount; /* ContextTable ref count */
LONG HandleCount; /* HANDLE count (CREATE/CLEANUP) */ LONG HandleCount; /* HANDLE count (CREATE/CLEANUP) */
SHARE_ACCESS ShareAccess; SHARE_ACCESS ShareAccess;
ULONG MainStreamDenyDeleteCount; /* number of times main stream is denying delete */ ULONG MainFileDenyDeleteCount; /* number of times main file is denying delete */
ULONG StreamDenyDeleteCount; /* number of open streams that are denying delete */ ULONG StreamDenyDeleteCount; /* number of times open streams are denying delete */
FSP_DEVICE_CONTEXT_BY_NAME_TABLE_ELEMENT ContextByNameElementStorage; FSP_DEVICE_CONTEXT_BY_NAME_TABLE_ELEMENT ContextByNameElementStorage;
/* locked under FSP_FSVOL_DEVICE_EXTENSION::FileRenameResource or Header.Resource */ /* locked under FSP_FSVOL_DEVICE_EXTENSION::FileRenameResource or Header.Resource */
UNICODE_STRING FileName; UNICODE_STRING FileName;
@ -952,7 +952,7 @@ typedef struct FSP_FILE_NODE
UINT64 IndexNumber; UINT64 IndexNumber;
BOOLEAN IsDirectory; BOOLEAN IsDirectory;
BOOLEAN IsRootDirectory; BOOLEAN IsRootDirectory;
struct FSP_FILE_NODE *MainStreamFileNode; /* this becomes invalid after our last desc close */ struct FSP_FILE_NODE *MainFileNode; /* this becomes invalid after our last desc close */
WCHAR FileNameBuf[]; WCHAR FileNameBuf[];
} FSP_FILE_NODE; } FSP_FILE_NODE;
typedef struct typedef struct
@ -968,8 +968,8 @@ typedef struct
UINT64 DirInfo; UINT64 DirInfo;
ULONG DirInfoCacheHint; ULONG DirInfoCacheHint;
/* stream support */ /* stream support */
HANDLE MainStreamHandle; HANDLE MainFileHandle;
PFILE_OBJECT MainStreamObject; PFILE_OBJECT MainFileObject;
} FSP_FILE_DESC; } FSP_FILE_DESC;
NTSTATUS FspFileNodeCopyList(PDEVICE_OBJECT DeviceObject, NTSTATUS FspFileNodeCopyList(PDEVICE_OBJECT DeviceObject,
FSP_FILE_NODE ***PFileNodes, PULONG PFileNodeCount); FSP_FILE_NODE ***PFileNodes, PULONG PFileNodeCount);

View File

@ -427,13 +427,13 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
FspFsvolDeviceLockContextTable(FsvolDeviceObject); FspFsvolDeviceLockContextTable(FsvolDeviceObject);
/* /*
* If this is a named stream we must also check with our main stream. * If this is a named stream we must also check with our main file.
* Note that FileNode->MainStreamFileNode and OpenedFileNode->MainStreamFileNode * Note that FileNode->MainFileNode and OpenedFileNode->MainFileNode
* will always be the same. * will always be the same.
*/ */
if (0 != FileNode->MainStreamFileNode) if (0 != FileNode->MainFileNode)
{ {
DeletePending = 0 != FileNode->MainStreamFileNode->DeletePending; DeletePending = 0 != FileNode->MainFileNode->DeletePending;
MemoryBarrier(); MemoryBarrier();
if (DeletePending) if (DeletePending)
{ {
@ -441,7 +441,7 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
goto exit; goto exit;
} }
if (0 < FileNode->MainStreamFileNode->MainStreamDenyDeleteCount) if (0 < FileNode->MainFileNode->MainFileDenyDeleteCount)
{ {
if (FlagOn(GrantedAccess, DELETE)) if (FlagOn(GrantedAccess, DELETE))
{ {
@ -474,7 +474,7 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
* opening a prior FileNode that we found in the table. * opening a prior FileNode that we found in the table.
*/ */
ASSERT(OpenedFileNode != FileNode); ASSERT(OpenedFileNode != FileNode);
ASSERT(OpenedFileNode->MainStreamFileNode == FileNode->MainStreamFileNode); ASSERT(OpenedFileNode->MainFileNode == FileNode->MainFileNode);
DeletePending = 0 != OpenedFileNode->DeletePending; DeletePending = 0 != OpenedFileNode->DeletePending;
MemoryBarrier(); MemoryBarrier();
@ -484,11 +484,11 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
goto exit; goto exit;
} }
/* if this is a main stream check whether there is a named stream that denies delete */ /* if this is a main file check whether there is a named stream that denies delete */
if (0 < OpenedFileNode->StreamDenyDeleteCount) if (0 < OpenedFileNode->StreamDenyDeleteCount)
{ {
/* we must be the main stream! */ /* we must be the main file! */
ASSERT(0 == OpenedFileNode->MainStreamFileNode); ASSERT(0 == OpenedFileNode->MainFileNode);
if (FlagOn(GrantedAccess, DELETE)) if (FlagOn(GrantedAccess, DELETE))
{ {
@ -529,10 +529,10 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
if (FileObject->DeleteAccess && !FileObject->SharedDelete) if (FileObject->DeleteAccess && !FileObject->SharedDelete)
{ {
if (0 == OpenedFileNode->MainStreamFileNode) if (0 == OpenedFileNode->MainFileNode)
OpenedFileNode->MainStreamDenyDeleteCount++; OpenedFileNode->MainFileDenyDeleteCount++;
else else
OpenedFileNode->MainStreamFileNode->StreamDenyDeleteCount++; OpenedFileNode->MainFileNode->StreamDenyDeleteCount++;
} }
Result = STATUS_SUCCESS; Result = STATUS_SUCCESS;
@ -615,10 +615,10 @@ VOID FspFileNodeCleanupComplete(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject
if (FileObject->DeleteAccess && !FileObject->SharedDelete) if (FileObject->DeleteAccess && !FileObject->SharedDelete)
{ {
if (0 == FileNode->MainStreamFileNode) if (0 == FileNode->MainFileNode)
FileNode->MainStreamDenyDeleteCount--; FileNode->MainFileDenyDeleteCount--;
else else
FileNode->MainStreamFileNode->StreamDenyDeleteCount--; FileNode->MainFileNode->StreamDenyDeleteCount--;
} }
IoRemoveShareAccess(FileObject, &FileNode->ShareAccess); IoRemoveShareAccess(FileObject, &FileNode->ShareAccess);
@ -1153,7 +1153,7 @@ VOID FspFileDescDelete(FSP_FILE_DESC *FileDesc)
{ {
PAGED_CODE(); PAGED_CODE();
FspMainStreamClose(FileDesc->MainStreamHandle, FileDesc->MainStreamObject); FspMainFileClose(FileDesc->MainFileHandle, FileDesc->MainFileObject);
if (0 != FileDesc->DirectoryPattern.Buffer && if (0 != FileDesc->DirectoryPattern.Buffer &&
FspFileDescDirectoryPatternMatchAll != FileDesc->DirectoryPattern.Buffer) FspFileDescDirectoryPatternMatchAll != FileDesc->DirectoryPattern.Buffer)

View File

@ -23,15 +23,15 @@ VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE
NTSTATUS FspCreateGuid(GUID *Guid); NTSTATUS FspCreateGuid(GUID *Guid);
NTSTATUS FspGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess, NTSTATUS FspGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess,
PULONG PFileNameIndex, PFILE_OBJECT *PFileObject, PDEVICE_OBJECT *PDeviceObject); PULONG PFileNameIndex, PFILE_OBJECT *PFileObject, PDEVICE_OBJECT *PDeviceObject);
NTSTATUS FspMainStreamOpen( NTSTATUS FspMainFileOpen(
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PUNICODE_STRING MainStreamName, BOOLEAN CaseSensitive, PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
ULONG Disposition, ULONG Disposition,
PHANDLE PMainStreamHandle, PHANDLE PMainFileHandle,
PFILE_OBJECT *PMainStreamObject); PFILE_OBJECT *PMainFileObject);
NTSTATUS FspMainStreamClose( NTSTATUS FspMainFileClose(
HANDLE MainStreamHandle, HANDLE MainFileHandle,
PFILE_OBJECT MainStreamObject); PFILE_OBJECT MainFileObject);
NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject, NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject,
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length); FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
static NTSTATUS FspSendSetInformationIrpCompletion( static NTSTATUS FspSendSetInformationIrpCompletion(
@ -102,8 +102,8 @@ NTSTATUS FspIrpHookNext(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context);
#pragma alloc_text(PAGE, FspUnicodePathSuffix) #pragma alloc_text(PAGE, FspUnicodePathSuffix)
#pragma alloc_text(PAGE, FspCreateGuid) #pragma alloc_text(PAGE, FspCreateGuid)
#pragma alloc_text(PAGE, FspGetDeviceObjectPointer) #pragma alloc_text(PAGE, FspGetDeviceObjectPointer)
#pragma alloc_text(PAGE, FspMainStreamOpen) #pragma alloc_text(PAGE, FspMainFileOpen)
#pragma alloc_text(PAGE, FspMainStreamClose) #pragma alloc_text(PAGE, FspMainFileClose)
#pragma alloc_text(PAGE, FspSendSetInformationIrp) #pragma alloc_text(PAGE, FspSendSetInformationIrp)
#pragma alloc_text(PAGE, FspBufferUserBuffer) #pragma alloc_text(PAGE, FspBufferUserBuffer)
#pragma alloc_text(PAGE, FspLockUserBuffer) #pragma alloc_text(PAGE, FspLockUserBuffer)
@ -384,25 +384,25 @@ NTSTATUS FspGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK Desir
return Result; return Result;
} }
NTSTATUS FspMainStreamOpen( NTSTATUS FspMainFileOpen(
PDEVICE_OBJECT DeviceObject, PDEVICE_OBJECT DeviceObject,
PUNICODE_STRING MainStreamName, BOOLEAN CaseSensitive, PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
ULONG Disposition, ULONG Disposition,
PHANDLE PMainStreamHandle, PHANDLE PMainFileHandle,
PFILE_OBJECT *PMainStreamObject) PFILE_OBJECT *PMainFileObject)
{ {
PAGED_CODE(); PAGED_CODE();
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK IoStatus; IO_STATUS_BLOCK IoStatus;
HANDLE MainStreamHandle; HANDLE MainFileHandle;
PFILE_OBJECT MainStreamObject; PFILE_OBJECT MainFileObject;
/* assert that the supplied name is actually a main stream name */ /* assert that the supplied name is actually a main file name */
ASSERT(FspUnicodePathIsValid(MainStreamName, 0)); ASSERT(FspUnicodePathIsValid(MainFileName, 0));
*PMainStreamHandle = 0; *PMainFileHandle = 0;
*PMainStreamObject = 0; *PMainFileObject = 0;
switch (Disposition) switch (Disposition)
{ {
@ -422,13 +422,13 @@ NTSTATUS FspMainStreamOpen(
InitializeObjectAttributes( InitializeObjectAttributes(
&ObjectAttributes, &ObjectAttributes,
MainStreamName, MainFileName,
OBJ_KERNEL_HANDLE | OBJ_FORCE_ACCESS_CHECK | (CaseSensitive ? 0 : OBJ_CASE_INSENSITIVE), OBJ_KERNEL_HANDLE | OBJ_FORCE_ACCESS_CHECK | (CaseSensitive ? 0 : OBJ_CASE_INSENSITIVE),
0/*RootDirectory*/, 0/*RootDirectory*/,
0/*SecurityDescriptor*/); 0/*SecurityDescriptor*/);
IoStatus.Status = IoCreateFileSpecifyDeviceObjectHint( IoStatus.Status = IoCreateFileSpecifyDeviceObjectHint(
&MainStreamHandle, &MainFileHandle,
FILE_READ_ATTRIBUTES, FILE_READ_ATTRIBUTES,
&ObjectAttributes, &ObjectAttributes,
&IoStatus, &IoStatus,
@ -447,38 +447,38 @@ NTSTATUS FspMainStreamOpen(
return IoStatus.Status; return IoStatus.Status;
IoStatus.Status = ObReferenceObjectByHandle( IoStatus.Status = ObReferenceObjectByHandle(
MainStreamHandle, MainFileHandle,
0/*DesiredAccess*/, 0/*DesiredAccess*/,
*IoFileObjectType, *IoFileObjectType,
KernelMode, KernelMode,
&MainStreamObject, &MainFileObject,
0/*HandleInformation*/); 0/*HandleInformation*/);
if (!NT_SUCCESS(IoStatus.Status)) if (!NT_SUCCESS(IoStatus.Status))
{ {
ObCloseHandle(MainStreamHandle, KernelMode); ObCloseHandle(MainFileHandle, KernelMode);
return IoStatus.Status; return IoStatus.Status;
} }
*PMainStreamHandle = MainStreamHandle; *PMainFileHandle = MainFileHandle;
*PMainStreamObject = MainStreamObject; *PMainFileObject = MainFileObject;
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
NTSTATUS FspMainStreamClose( NTSTATUS FspMainFileClose(
HANDLE MainStreamHandle, HANDLE MainFileHandle,
PFILE_OBJECT MainStreamObject) PFILE_OBJECT MainFileObject)
{ {
PAGED_CODE(); PAGED_CODE();
NTSTATUS Result = STATUS_SUCCESS; NTSTATUS Result = STATUS_SUCCESS;
if (0 != MainStreamObject) if (0 != MainFileObject)
ObDereferenceObject(MainStreamObject); ObDereferenceObject(MainFileObject);
if (0 != MainStreamHandle) if (0 != MainFileHandle)
{ {
Result = ObCloseHandle(MainStreamHandle, KernelMode); Result = ObCloseHandle(MainFileHandle, KernelMode);
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))
DEBUGLOG("ObCloseHandle() = %s", NtStatusSym(Result)); DEBUGLOG("ObCloseHandle() = %s", NtStatusSym(Result));
} }