183 lines
4.1 KiB
C
183 lines
4.1 KiB
C
|
/*++
|
||
|
|
||
|
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_
|