WmipProbeWmiOpenGuidBlock

NTSTATUS __stdcall WmipProbeWmiOpenGuidBlock(
        _OBJECT_ATTRIBUTES *CapturedObjectAttributes,
        _UNICODE_STRING *CapturedGuidString,
        WCHAR *CapturedGuidBuffer,
        UINT64 *DesiredAccess,
        WMIOPENGUIDBLOCK *InGuidBlock,
        UINT64 InBufferLen,
        UINT64 OutBufferLen){
  _OBJECT_ATTRIBUTES *v11; 
  WMIOPENGUIDBLOCK v12; 
  NTSTATUS result; 

  if( IoIs32bitProcess(0i64) )
  {
    if( (_DWORD)InBufferLen == 16 && (_DWORD)OutBufferLen == 16 )
    {
      v11 = (_OBJECT_ATTRIBUTES *)(unsigned int)*InGuidBlock;
      v12 = InGuidBlock[1];
      goto LABEL_5;
    }
    return -1073741823;
  }
  if( (_DWORD)InBufferLen != 24 || (_DWORD)OutBufferLen != 24 )
    return -1073741823;
  v11 = *(_OBJECT_ATTRIBUTES **)InGuidBlock;
  v12 = InGuidBlock[2];
LABEL_5:
  *(_DWORD *)DesiredAccess = v12;
  result = WmipProbeAndCaptureGuidObjectAttributes(
             CapturedObjectAttributes,
             CapturedGuidString,
             CapturedGuidBuffer,
             v11);
  if( result >= 0
    && (CapturedObjectAttributes->RootDirectory
     || CapturedObjectAttributes->Attributes
     || CapturedObjectAttributes->SecurityDescriptor
     || CapturedObjectAttributes->SecurityQualityOfService) )
  {
    return -1073741811;
  }
  return result;
}

Referenced by:

WmipIoControl