Я пытаюсь предварительно установить драйвер .inf после загрузки моей программы Windows и использовал этот вопрос в качестве примера.Я пишу в VB.Net, хотя исходный вопрос был написан на C #, поэтому, возможно, я что-то потерял в переводе, но вот что у меня есть:
Public Shared Function PreInstall(ByVal fileName As String, Optional ByVal useDefaultLocation As Boolean = True) As Boolean
Try
Dim file As String = IIf(useDefaultLocation, DriverLocation(fileName), fileName)
Dim result As Int32 = DriverPackagePreinstall(file, 0) 'this is not working but I don't know why?!?
Return (result = ERROR_SUCCESS OrElse result = ERROR_ALREADY_EXISTS)
Catch ex As Exception
My.Application.LogError(ex, New StringPair("Driver", fileName))
End Try
Return False
End Function
Private Shared ReadOnly Property DriverLocation(ByVal fileName As String) As String
Get
Return String.Format("{0}\Drivers\{1}", ApplicationDirectory(), fileName)
End Get
End Property
Public Function ApplicationDirectory() As String
If My.Application.IsNetworkDeployed Then
Return My.Application.Deployment.DataDirectory
Else
Return Application.StartupPath
End If
End Function
<DllImport("DIFXApi.dll", CharSet:=CharSet.Unicode)> _
Public Shared Function DriverPackagePreinstall(ByVal DriverPackageInfPath As String, ByVal Flags As Int32) As Int32
End Function
Const ERROR_SUCCESS As Int32 = 0
Const ERROR_ALREADY_EXISTS As Int32 = &HB7
Const ERROR_ACCESS_DENIED As Int32 = &H5
Мой файл .inf находится в каталоге с драйверами инастраивается в файлах приложения как обязательный «файл данных».Мое приложение развернуто через ClickOnce;однако в настоящее время я не могу заставить его работать на моем локальном компьютере.
Но когда я перехожу к отладчику и вызываю DriverPackagePreinstall внутри функции PreInstall, я получаю -536870347 как результат Int32.Я знаю, что это не имеет смысла, поскольку это должен быть положительный код ошибки или 0 (ERROR_SUCCESS).Я проверил, что INF-файл находится в том месте, где я его ожидаю, и я запустил DIFxCmd.exe \ p, используя это местоположение файла в среде сборки WDK, и получил ожидаемые результаты.Кто-нибудь знает, почему я получу такой странный результат в моем приложении?Или у кого-нибудь есть другой / лучший способ установки драйвера .inf с приложением ClickOnce?