IoCreateController

PCONTROLLER_OBJECT __stdcall IoCreateController(ULONG Size){
  struct _CONTROLLER_OBJECT *v1; 
  __int16 v2; 
  __int64 Flags; 
  UINT64 Flagsa; 
  __int64 v6[3]; 
  int v7; 
  int v8; 
  __int128 v9; 
  PADAPTER_OBJECT DmaAdapter; 
  HANDLE Handle; 
  v1 = 0i64;
  v2 = Size;
  v6[0] = 48i64;
  v8 = 0;
  v7 = IopCaseInsensitive != 0 ? 576 : 512;
  DmaAdapter = 0i64;
  Handle = 0i64;
  v6[1] = 0i64;
  v6[2] = 0i64;
  v9 = 0i64;
  if( (int)ObCreateObjectEx(
              0,
              (_DWORD *)IoControllerObjectType,
              (__int64)v6,
              0,
              Flags,
              Size + 72,
              0,
              0,
              &DmaAdapter,
              0i64) >= 0 )
  {
    LODWORD(Flagsa) = 0;
    if( ObInsertObjectEx(DmaAdapter, 0i64, 3ui64, 1ui64, Flagsa, (PVOID *)&DmaAdapter, &Handle) >= 0 )
    {
      ObCloseHandle(Handle, 0);
      v1 = (struct _CONTROLLER_OBJECT *)DmaAdapter;
      memset((INT64)DmaAdapter, 0i64);
      v1->Type = 2;
      v1->Size = v2 + 72;
      v1->ControllerExtension = &v1[1];
      KeInitializeDeviceQueue(&v1->DeviceWaitQueue);
    }
  }
  return v1;
}

Referenced by:

No references.