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.