ViDdiDriverEntry

INT64 __fastcall ViDdiDriverEntry(_DRIVER_OBJECT *DriverObject, _UNICODE_STRING *RegistryPath){
  int v4; 
  __int64 v5; 
  NTSTATUS v6; 
  PDEVICE_OBJECT v7; 
  int v8; 
  __int64 i; 
  __int64 v10; 
  NTSTATUS v11; 
  UINT64 DeviceCharacteristics; 
  PDEVICE_OBJECT DeviceObject; 
  DeviceObject = 0i64;
  DriverObject->MajorFunction[23] = (int(__fastcall *)(_DEVICE_OBJECT *, _IRP *))ViDdiDispatchWmi;
  ViDdiDeviceObjectArray = (__int64)ExAllocatePoolWithTag(NonPagedPoolNx, 8ui64, 0x61446656ui64);
  if( !ViDdiDeviceObjectArray )
    return 3221225626i64;
  v4 = 0;
  v5 = 0i64;
  do
  {
    LODWORD(DeviceCharacteristics) = 384;
    v6 = IoCreateDevice(DriverObject, 4ui64, 0i64, 0x22ui64, DeviceCharacteristics, 0, &DeviceObject);
    if( v6 < 0 )
      return(unsigned int)v6;
    v7 = DeviceObject;
    *(_QWORD *)(v5 + ViDdiDeviceObjectArray) = DeviceObject;
    v5 += 8i64;
    **((_DWORD **)v7 + 8) = v4++;
  }
  while( !v4 );
  v8 = 0;
  for( i = 0i64; ; i += 8i64 )
  {
    v10 = *(_QWORD *)(i + ViDdiDeviceObjectArray);
    *(_DWORD *)(v10 + 48) &= ~0x80u;
    v11 = IoWMIRegistrationControl((DEVICE_OBJECT *)v10, 1ui64);
    if( v11 < 0 )
      break;
    if( ++v8 )
      return 0i64;
  }
  IoDeleteDevice((_DEVICE_OBJECT *)v10);
  return(unsigned int)v11;
}

Referenced by:

No references.