IopCreateRootDirectories

UINT8 __stdcall IopCreateRootDirectories(){
  UINT8 result; 
  _UNICODE_STRING DestinationString; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  VOID *DirectoryHandle; 

  DirectoryHandle = 0i64;
  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  DestinationString = 0i64;
  RtlInitUnicodeString(&DestinationString, L"\\Driver");
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.ObjectName = &DestinationString;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 528;
  *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
  result = 0;
  if( NtCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes) >= 0 )
  {
    ObCloseHandle(DirectoryHandle, 0);
    RtlInitUnicodeString(&DestinationString, L"\\FileSystem");
    if( NtCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes) >= 0 )
    {
      ObCloseHandle(DirectoryHandle, 0);
      RtlInitUnicodeString(&DestinationString, L"\\FileSystem\\Filters");
      if( NtCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes) >= 0 )
      {
        ObCloseHandle(DirectoryHandle, 0);
        if( IopCreateUmdfDirectory() >= 0 )
          return 1;
      }
    }
  }
  return result;
}

Referenced by:

IoInitSystemPreDrivers