PoCaptureReasonContext
NTSTATUS __stdcall PoCaptureReasonContext(
_COUNTED_REASON_CONTEXT *Context,
INT8 PreviousMode,
_DEVICE_OBJECT *DeviceObject,
UINT8 BaseStructureSafe,
UINT8 *ImportantTimer,
_DIAGNOSTIC_CONTEXT **ReturnContext){
int v6;
INT64 a6[2];
INT64 a8[2];
PUNICODE_STRING ReasonStrings;
*(_OWORD *)a6 = 0i64;
*(_OWORD *)a8 = 0i64;
ReasonStrings = 0i64;
*ReturnContext = 0i64;
if( Context && PreviousMode )
{
if( !BaseStructureSafe )
{
if( ((unsigned __int8)Context & 3) != 0 )
ExRaiseDatatypeMisalignment();
if( (unsigned __int64)&Context[1] > 0x7FFFFFFF0000i64 || &Context[1] < Context )
MEMORY[0x7FFFFFFF0000] = 0;
*(_OWORD *)a6 = *(_OWORD *)&Context->Version;
*(_OWORD *)a8 = *(_OWORD *)&Context->SimpleString.Buffer;
ReasonStrings = Context->ReasonStrings;
Context = (_COUNTED_REASON_CONTEXT *)a6;
}
v6 = PopCaptureReasonContext(Context, PreviousMode, ImportantTimer, ReturnContext);
}
else
{
v6 = PopCaptureReasonContext(Context, PreviousMode, ImportantTimer, ReturnContext);
}
if( v6 >= 0 )
PoGetRequester();
return v6;
}Referenced by:
NtSetThreadExecutionState
NtSetTimer
NtSetTimerEx
PoCreatePowerRequest
PoCreateThermalRequest
PoRegisterSystemState
PopInitializeHighPerfPowerRequest
PopPowerRequestCreateInfo