windows-nt/Source/XPSP1/NT/admin/pchealth/sr/kernel/filenames.h

183 lines
4.1 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1998-1999 Microsoft Corporation
Module Name:
event.h
Abstract:
contains prototypes for functions in event.c
Author:
Paul McDaniel (paulmcd) 01-March-2000
Revision History:
--*/
#ifndef _FILENAMES_H_
#define _FILENAMES_H_
#if DBG
VOID
VALIDATE_FILENAME(
IN PUNICODE_STRING pName
);
#else
#define VALIDATE_FILENAME(_fileName) ((VOID)0)
#endif
NTSTATUS
SrpGetFileName(
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN OUT PSRP_NAME_CONTROL pNameCtrl
);
NTSTATUS
SrpGetFileNameFromFileObject (
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN OUT PSRP_NAME_CONTROL pNameCtrl,
OUT PBOOLEAN pReasonableErrorForUnOpenedName
);
NTSTATUS
SrpGetFileNameOpenById (
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN OUT PSRP_NAME_CONTROL pNameCtrl,
OUT PBOOLEAN pReasonableErrorForUnOpenedName
);
VOID
SrpRemoveStreamName(
IN OUT PSRP_NAME_CONTROL pNameCtrl
);
NTSTATUS
SrpExpandDestPath (
IN PSR_DEVICE_EXTENSION pExtension,
IN HANDLE RootDirectory,
IN ULONG FileNameLength,
IN PWSTR pFileName,
IN PSR_STREAM_CONTEXT pOriginalFileContext,
IN PFILE_OBJECT pOriginalFileObject,
OUT PUNICODE_STRING *ppNewName,
OUT PUSHORT pNewNameStreamLength,
OUT PBOOLEAN pReasonableErrorForUnOpenedName
);
VOID
SrpInitNameControl(
IN PSRP_NAME_CONTROL pNameCtrl
);
VOID
SrpCleanupNameControl(
IN PSRP_NAME_CONTROL pNameCtrl
);
NTSTATUS
SrpReallocNameControl(
IN PSRP_NAME_CONTROL pNameCtrl,
ULONG newSize,
PWCHAR *retOriginalBuffer OPTIONAL
);
NTSTATUS
SrpExpandFileName (
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN SR_EVENT_TYPE EventFlags,
IN OUT PSRP_NAME_CONTROL pNameCtrl,
OUT PBOOLEAN pReasonableErrorForUnOpenedName
);
NTSTATUS
SrIsFileEligible (
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN BOOLEAN IsDirectory,
IN SR_EVENT_TYPE EventFlags,
IN OUT PSRP_NAME_CONTROL pNameCtrl,
OUT PBOOLEAN pIsInteresting,
OUT PBOOLEAN pReasonableErrorForUnOpenedName
);
BOOLEAN
SrFileNameContainsStream (
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN PSR_STREAM_CONTEXT pFileContext OPTIONAL
);
BOOLEAN
SrFileAlreadyExists (
IN PSR_DEVICE_EXTENSION pExtension,
IN PFILE_OBJECT pFileObject,
IN PSR_STREAM_CONTEXT pFileContext OPTIONAL
);
NTSTATUS
SrIsFileStream (
PSR_DEVICE_EXTENSION pExtension,
PSRP_NAME_CONTROL pNameCtrl,
PBOOLEAN pIsFileStream,
PBOOLEAN pReasonableErrorForUnOpenedName
);
NTSTATUS
SrCheckForNameTunneling (
IN PSR_DEVICE_EXTENSION pExtension,
IN OUT PSR_STREAM_CONTEXT *ppFileContext
);
//
// If it is determined that we need to allocate a buffer anyway we might as
// well make it big enough to hold most expanded short names. Allocate this
// much extra to handle this.
//
#define SHORT_NAME_EXPANSION_SPACE 512
//
// This macro will check to see if we need to grow the name control buffer
//
#define SrpNameCtrlBufferCheck( nctrl, len ) \
(((len) > ((nctrl)->BufferSize - sizeof(WCHAR))) ? \
SrpReallocNameControl( (nctrl), \
(len) + \
SHORT_NAME_EXPANSION_SPACE + \
sizeof(WCHAR), \
NULL ) : \
STATUS_SUCCESS)
//
// This macro will check to see if we need to grow the name control buffer.
// This will also return the old allocated buffer if there was one.
//
#define SrpNameCtrlBufferCheckKeepOldBuffer( nctrl, len, retBuf ) \
(((len) > ((nctrl)->BufferSize - sizeof(WCHAR))) ? \
SrpReallocNameControl( (nctrl), \
(len) + \
SHORT_NAME_EXPANSION_SPACE + \
sizeof(WCHAR), \
(retBuf) ) : \
(*(retBuf) = NULL, STATUS_SUCCESS)) /*make sure buffer is NULLED*/
#endif // _FILENAMES_H_