Пытаюсь получить на винде Vista и старше, местораположение первоисточника драйвера который лежит в каталоге DriverStore\Filerepository
Для этого есть функция SetupGetInfDriverStoreLocation описание функции на msdn
Но что-то у меня не получается. Функция возвращает пустое значение, посдкажите верно ли я описал API-функцию и ее вызов.
- Код: Выделить всё
Public Declare Function SetupGetInfDriverStoreLocationA Lib "setupapi.dll" (ByVal FileName As String, _
AlternatePlatformInfo As PSP_ALTPLATFORM_INFO, _
ByVal LocaleName As String, _
ByVal ReturnBuffer As String, _
ByVal ReturnBufferSize As Long, _
ByRef RequiredSize As Long) As Long
Private Declare Function FormatMessage _
Lib "kernel32.dll" _
Alias "FormatMessageA" (ByVal dwFlags As Long, _
lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
Arguments As Long) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
Private Type PSP_ALTPLATFORM_INFO
cbSize As Long
Platform As Long
MajorVersion As Long
MinorVersion As Long
ProcessorArchitecture As Integer
Reserved As Integer
End Type
Private Const MAX_PATH As Long = 260
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Sub Main()
Call Func3("c:\Windows\inf\oem8.inf")
End Sub
Public Function Func3(sInfPath As String) As String
Dim sBuffer As String
Dim as12 As PSP_ALTPLATFORM_INFO
Dim ret As Long
Dim lngsize As Long
sBuffer = Space$(MAX_PATH)
ret = SetupGetInfDriverStoreLocationA(sInfPath, as12, 0&, sBuffer, Len(sBuffer), 0)
Func3 = TrimNull(sBuffer)
MsgBox "Err ¹" & Err.LastDllError & " - " & ApiErrorText(Err.LastDllError)
End Function
[Хакер] :: Неужели с первого раза не доходит, в чём разница тегом code и icode? Неужели после второго раза, когда было увидено сообщение с невероятно омерзительным внешним видом, не стало ясно, что тег icode вместо code был выбран зря?
Заранее спасибо.