Я пытаюсь установить диск программно во время установки моей программы. Я пробовал несколько вещей, и ни одна из них, похоже, не устанавливает мой драйвер.
Вещи, которые я пробовал на основе поиска в Google / Stack:
Метод 1:
установить атрибут: [DllImport("DIFxAPI.dll", CharSet = CharSet.Auto, SetLastError = true)]
result = DriverPackagePreinstall(tempPath + "umpusbXP.inf", Flags);
if (result != 0)
MessageBox.Show("Driver 'umpusbXP.inf' installation failed.");
, где Flags
были установлены различные комбинации
//0x00000010
Int32 DRIVER_PACKAGE_LEGACY_MODE = 16;
//0x00000004
Int32 DRIVER_PACKAGE_FORCE = 4;
//0x00000008
Int32 DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT = 8;
Кажется, не работает. Он будет возвращать различные ошибки, некоторые из которых я могу найти значение в Интернете, другие нет. наиболее распространенным является 0xE0000304 ERROR_INVALID_CATALOG_DATA => no cat
(который я нашел в ). У других ошибок были номера, которых не было ни в этом файле, ни где-либо еще, что я мог найти.
Метод 2:
установить атрибут:
[DllImport("Setupapi.dll", EntryPoint = "InstallHinfSection", CallingConvention = CallingConvention.StdCall)]
public static extern void InstallHinfSection(
[In] IntPtr hwnd,
[In] IntPtr ModuleHandle,
[In, MarshalAs(UnmanagedType.LPWStr)] string CmdLineBuffer,
int nCmdShow);
затем использовали метод
InstallHinfSection(IntPtr.Zero, IntPtr.Zero, tempPath + "umpusbXP.inf", 0);
Этот метод возвращает void, поэтому трудно получить какую-либо информацию из него. Само собой разумеется, это не устанавливает драйвер.
Метод 3:
установить атрибут:
[DllImport("setupapi.dll")]
public static extern bool SetupCopyOEMInf(
string SourceInfFileName,
string OEMSourceMediaLocation,
OemSourceMediaType OEMSourceMediaType,
OemCopyStyle CopyStyle,
string DestinationInfFileName,
int DestinationInfFileNameSize,
ref int RequiredSize,
string DestinationInfFileNameComponent
);
затем использовал этот метод
string output ="";
int size = 0;
SetupCopyOEMInf(tempPath + "umpusbXP.inf", null, OemSourceMediaType.SPOST_PATH, OemCopyStyle.SP_COPY_OEMINF_CATALOG_ONLY, null, 0, ref size, output);
Я использую эти методы, насколько мне известно, но документацию было сложно читать. Я продолжаю проверять файл setupapi.log
на наличие ошибок, но ни один не появляется. Как установить драйверы?