DbgkLkmdUnregisterCallback
NTSTATUS __stdcall DbgkLkmdUnregisterCallback(
INT64 *CallbackRoutine,
INT64 *a2,
VOID *a3,
VOID *a4,
UINT64 a5,
UINT8 *a6,
VOID *a7,
VOID *a8,
UINT64 a9,
VOID *a10,
VOID *a11,
VOID *a12){
unsigned int v13;
INT64 *v14;
_EX_RUNDOWN_REF *v15;
_EX_RUNDOWN_REF *v16;
v13 = 0;
while( 1 )
{
v14 = (INT64 *)(&stru_140C53C70 + 4 * v13);
v15 = ExReferenceCallBackBlock(v14);
v16 = v15;
if( v15 )
break;
LABEL_6:
if( ++v13 >= 8 )
return -1073741275;
}
if( CallbackRoutine != (INT64 *)v15[1].Count
|| !ExCompareExchangeCallBack((_EX_CALLBACK *)v14, 0i64, (_EX_CALLBACK_ROUTINE_BLOCK *)v15) )
{
ExDereferenceCallBackBlock((_EX_CALLBACK *)v14, v16);
goto LABEL_6;
}
ExDereferenceCallBackBlock((_EX_CALLBACK *)v14, v16);
ExWaitForRundownProtectionRelease(v16);
ExFreePoolWithTag(v16, 0);
return 0;
}Referenced by:
No references.