BazisLib::DDK::_DirectFile< _Base > Class Template Reference

Represents a file that is read/written by sending IRP_MJ_READ/IRP_MJ_WRITE IRPs to FS driver. More...

#include <file.h>

Inherits _Base.

Collaboration diagram for BazisLib::DDK::_DirectFile< _Base >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 _DirectFile (const FilePath &filePath, bool AllowWrite)
 ~_DirectFile ()
size_t Read (void *pBuffer, size_t size, ActionStatus *pStatus=NULL)
size_t Write (const void *pBuffer, size_t size, ActionStatus *pStatus=NULL)
void Close ()
size_t ReadAt (ULONGLONG Offset, void *pBuffer, size_t size, ActionStatus *pStatus)
size_t WriteAt (ULONGLONG Offset, const void *pBuffer, size_t size, ActionStatus *pStatus)
LONGLONG GetPosition (ActionStatus *pStatus=NULL)
LONGLONG Seek (LONGLONG Offset, FileFlags::SeekType seekType, ActionStatus *pStatus=NULL)

Protected Attributes

PFILE_OBJECT m_pFileObj
ULONGLONG m_CurrentOffset
bool m_bAllowWrite


Detailed Description

template<class _Base>
class BazisLib::DDK::_DirectFile< _Base >

Represents a file that is read/written by sending IRP_MJ_READ/IRP_MJ_WRITE IRPs to FS driver.

The experimental DirectFile class allows accessing NT files by sending IRP_MJ_READ/IRP_MJ_WRITE IRPs directly to filesystem driver. This allows bypassing restrictions implied by ZwReadFile()/ ZwWriteFile() routines.

Remarks:
Note that all operations except reading and writing are performed using the file handle and may inherit some restrictions implied by object manager & IO manager.

Constructor & Destructor Documentation

template<class _Base >
BazisLib::DDK::_DirectFile< _Base >::_DirectFile ( const FilePath filePath,
bool  AllowWrite 
) [inline]

template<class _Base >
BazisLib::DDK::_DirectFile< _Base >::~_DirectFile (  )  [inline]

Here is the call graph for this function:


Member Function Documentation

template<class _Base >
void BazisLib::DDK::_DirectFile< _Base >::Close (  )  [inline]

template<class _Base >
LONGLONG BazisLib::DDK::_DirectFile< _Base >::GetPosition ( ActionStatus pStatus = NULL  )  [inline]

template<class _Base >
size_t BazisLib::DDK::_DirectFile< _Base >::Read ( void *  pBuffer,
size_t  size,
ActionStatus pStatus = NULL 
) [inline]

Here is the call graph for this function:

template<class _Base >
size_t BazisLib::DDK::_DirectFile< _Base >::ReadAt ( ULONGLONG  Offset,
void *  pBuffer,
size_t  size,
ActionStatus pStatus 
) [inline]

Here is the call graph for this function:

template<class _Base >
LONGLONG BazisLib::DDK::_DirectFile< _Base >::Seek ( LONGLONG  Offset,
FileFlags::SeekType  seekType,
ActionStatus pStatus = NULL 
) [inline]

template<class _Base >
size_t BazisLib::DDK::_DirectFile< _Base >::Write ( const void *  pBuffer,
size_t  size,
ActionStatus pStatus = NULL 
) [inline]

Here is the call graph for this function:

template<class _Base >
size_t BazisLib::DDK::_DirectFile< _Base >::WriteAt ( ULONGLONG  Offset,
const void *  pBuffer,
size_t  size,
ActionStatus pStatus 
) [inline]

Here is the call graph for this function:


Member Data Documentation

template<class _Base >
bool BazisLib::DDK::_DirectFile< _Base >::m_bAllowWrite [protected]

template<class _Base >
ULONGLONG BazisLib::DDK::_DirectFile< _Base >::m_CurrentOffset [protected]

template<class _Base >
PFILE_OBJECT BazisLib::DDK::_DirectFile< _Base >::m_pFileObj [protected]


The documentation for this class was generated from the following file:
SourceForge.net Logo