PopPowerRequestCreateInfo
NTSTATUS __stdcall PopPowerRequestCreateInfo(
_COUNTED_REASON_CONTEXT *CountedReasonContext,
UINT8 SpecialRequest,
VOID **ReturnHandle,
INT64 a4,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
_DIAGNOSTIC_CONTEXT *v10;
int inserted;
NTSTATUS v12;
unsigned int *v13;
UINT64 v15;
VOID *PowerRequest;
_DIAGNOSTIC_CONTEXT *Context;
PVOID Handle;
Context = 0i64;
Handle = 0i64;
PowerRequest = 0i64;
if( KeGetCurrentThread()->PreviousMode )
{
inserted = PoCaptureReasonContext(CountedReasonContext, 1, 0i64, 1u, 0i64, &Context);
if( inserted >= 0 )
{
v10 = Context;
v12 = PopCreateUserPowerRequest(&PowerRequest, SpecialRequest, Context);
v13 = (unsigned int *)PowerRequest;
inserted = v12;
if( v12 >= 0 )
{
v10 = 0i64;
ObfReferenceObjectWithTag(PowerRequest, 0x72506F50ui64);
LODWORD(v15) = 0;
inserted = ObInsertObjectEx(v13, 0i64, 0i64, 0i64, v15, 0i64, &Handle);
if( inserted >= 0 )
PopNotifySessionUserPowerRequestCreated(v13[4], v13[7], (INT64)Handle);
}
if( v13 )
ObfDereferenceObjectWithTag(v13, 0x72506F50ui64);
}
else
{
v10 = 0i64;
}
}
else
{
v10 = Context;
inserted = -1073741637;
}
if( ReturnHandle )
*ReturnHandle = Handle;
if( v10 )
PoDestroyReasonContext(v10);
return inserted;
}Referenced by:
NtPowerInformation