IoCreateFileEx

NTSTATUS __stdcall IoCreateFileEx(
        VOID **FileHandle,
        UINT64 DesiredAccess,
        _OBJECT_ATTRIBUTES *ObjectAttributes,
        _IO_STATUS_BLOCK *IoStatusBlock,
        _LARGE_INTEGER *AllocationSize,
        UINT64 FileAttributes,
        UINT64 ShareAccess,
        UINT64 Disposition,
        UINT64 CreateOptions,
        VOID *EaBuffer,
        UINT64 EaLength,
        _CREATE_FILE_TYPE CreateFileType,
        VOID *InternalParameters,
        UINT64 Options,
        _IO_DRIVER_CREATE_CONTEXT *DriverContext){
  unsigned int v17; 
  unsigned int v18; 
  _ECP_LIST *ExtraCreateParameter; 
  unsigned int v21; 
  NTSTATUS result; 
  int v23; 
  UINT64 v24; 
  UINT64 v25; 
  UINT64 v26; 
  UINT64 v27; 
  UINT64 v28; 
  UINT64 v29; 
  UINT64 InternalFlags; 

  v17 = ((unsigned int)Options >> 10) & 2;
  v18 = DesiredAccess;
  if( !DriverContext )
  {
LABEL_11:
    LODWORD(InternalFlags) = v17;
    LODWORD(v29) = Options | 0x100;
    LODWORD(v28) = EaLength;
    LODWORD(v27) = CreateOptions;
    LODWORD(v26) = Disposition;
    LODWORD(v25) = ShareAccess;
    LODWORD(v24) = FileAttributes;
    return IopCreateFile(
             FileHandle,
             v18,
             ObjectAttributes,
             IoStatusBlock,
             AllocationSize,
             v24,
             v25,
             v26,
             v27,
             EaBuffer,
             v28,
             CreateFileType,
             InternalParameters,
             v29,
             InternalFlags,
             DriverContext);
  }
  ExtraCreateParameter = DriverContext->ExtraCreateParameter;
  v21 = v17 | 1;
  if( !DriverContext->DeviceObjectHint )
    v21 = ((unsigned int)Options >> 10) & 2;
  if( !ExtraCreateParameter
    || (result = FsRtlpPrepareExtraCreateParametersForCreate(ExtraCreateParameter), result >= 0) )
  {
    v23 = v21 | 4;
    if( !DriverContext->TxnParameters )
      v23 = v21;
    v17 = v23;
    if( DriverContext->Size >= 0x28u && DriverContext->SiloContext != (_EJOB *)1 )
      v17 = v23 | 0x40;
    goto LABEL_11;
  }
  return result;
}

Referenced by:

IoCreateFileSpecifyDeviceObjectHint
IopOpenLinkOrRenameTarget
NtCreateUserProcess