|
|
/*++
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_
|