Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayKernel::CKeIRP Struct Reference

#include <cKernel.h>

Inheritance diagram for GrayKernel::CKeIRP:

Public Member Functions

NTSTATUS get_IoStatus () const
 
SIZE_T get_IoInformationSize () const
 
PVOID get_AssocSystemBuffer () const
 
void FreeIrp ()
 
void RemoveIrpFromQueue ()
 
PDRIVER_CANCEL SetCancelRoutine (PDRIVER_CANCEL pCancelRoutine=nullptr)
 
BOOLEAN CancelIrp ()
 
void MarkIrpPending ()
 
void CompleteRequest (CCHAR cPriorityBoost=IO_NO_INCREMENT)
 
void CompleteRequestStatus (NTSTATUS lStatus=STATUS_SUCCESS, ULONG_PTR uInformation=0, CCHAR cPriorityBoost=IO_NO_INCREMENT)
 
NTSTATUS CallDriver (IN PDEVICE_OBJECT pDeviceObject)
 
PIO_STACK_LOCATION get_StackLocation () const
 
void SkipStackLocation ()
 
NTSTATUS SkipStackLocation (PDEVICE_OBJECT pLowerDeviceObject)
 
PIO_STACK_LOCATION get_NextStackLocation () const
 
void CopyStackLocationToNext ()
 
void SetNextStackLocation ()
 
void SetCompletionRoutine (PIO_COMPLETION_ROUTINE pRoutine, void *pCompletionContext, UCHAR uControlFlags)
 
void SetCompletionRoutine (PIO_COMPLETION_ROUTINE pRoutine, void *pCompletionContext, bool bInvokeOnSuccess, bool bInvokeOnError, bool bInvokeOnCancel)
 

Detailed Description

Overload _IRP Add functional methods to the IRP can come from IoAllocateIrp()

Member Function Documentation

◆ CallDriver()

NTSTATUS GrayKernel::CKeIRP::CallDriver ( IN PDEVICE_OBJECT  pDeviceObject)
inline

◆ CancelIrp()

BOOLEAN GrayKernel::CKeIRP::CancelIrp ( )
inline

◆ CompleteRequest()

void GrayKernel::CKeIRP::CompleteRequest ( CCHAR  cPriorityBoost = IO_NO_INCREMENT)
inline

PriorityBoost = IO_SERIAL_INCREMENT, etc IofCompleteRequest

◆ CompleteRequestStatus()

void GrayKernel::CKeIRP::CompleteRequestStatus ( NTSTATUS  lStatus = STATUS_SUCCESS,
ULONG_PTR  uInformation = 0,
CCHAR  cPriorityBoost = IO_NO_INCREMENT 
)
inline

◆ CopyStackLocationToNext()

void GrayKernel::CKeIRP::CopyStackLocationToNext ( )
inline

◆ FreeIrp()

void GrayKernel::CKeIRP::FreeIrp ( )
inline

◆ get_AssocSystemBuffer()

PVOID GrayKernel::CKeIRP::get_AssocSystemBuffer ( ) const
inline

◆ get_IoInformationSize()

SIZE_T GrayKernel::CKeIRP::get_IoInformationSize ( ) const
inline

ULONG_PTR being used as a size. (can sometimes be a pointer)

◆ get_IoStatus()

NTSTATUS GrayKernel::CKeIRP::get_IoStatus ( ) const
inline

◆ get_NextStackLocation()

PIO_STACK_LOCATION GrayKernel::CKeIRP::get_NextStackLocation ( ) const
inline

◆ get_StackLocation()

PIO_STACK_LOCATION GrayKernel::CKeIRP::get_StackLocation ( ) const
inline

◆ MarkIrpPending()

void GrayKernel::CKeIRP::MarkIrpPending ( )
inline

'PendingReturned' flag ? and 'IoStatus.Status' = STATUS_PENDING ?

◆ RemoveIrpFromQueue()

void GrayKernel::CKeIRP::RemoveIrpFromQueue ( )
inline

◆ SetCancelRoutine()

PDRIVER_CANCEL GrayKernel::CKeIRP::SetCancelRoutine ( PDRIVER_CANCEL  pCancelRoutine = nullptr)
inline

◆ SetCompletionRoutine() [1/2]

void GrayKernel::CKeIRP::SetCompletionRoutine ( PIO_COMPLETION_ROUTINE  pRoutine,
void *  pCompletionContext,
bool  bInvokeOnSuccess,
bool  bInvokeOnError,
bool  bInvokeOnCancel 
)
inline

Macro to use SL_INVOKE_ON_SUCCESS flags

◆ SetCompletionRoutine() [2/2]

void GrayKernel::CKeIRP::SetCompletionRoutine ( PIO_COMPLETION_ROUTINE  pRoutine,
void *  pCompletionContext,
UCHAR  uControlFlags 
)
inline

similar to the IoSetCompletionRoutine macro uControlFlags = SL_INVOKE_ON_SUCCESS SL_INVOKE_ON_ERROR SL_INVOKE_ON_CANCEL

◆ SetNextStackLocation()

void GrayKernel::CKeIRP::SetNextStackLocation ( )
inline

◆ SkipStackLocation() [1/2]

void GrayKernel::CKeIRP::SkipStackLocation ( )
inline

◆ SkipStackLocation() [2/2]

NTSTATUS GrayKernel::CKeIRP::SkipStackLocation ( PDEVICE_OBJECT  pLowerDeviceObject)
inline

skip this and pass to the next device in the stack.


The documentation for this struct was generated from the following file: