Driver Installation Through a *.INF file [In VB.NET]
If to whom it is interesting, on the basis of this example has collected such variant of
driver installation [In VB.NET]
[On 90 % its basis is taken!]
__________________________
-/ to the author of thanks
for an IT example /-
Function`s:
<DllImport("SETUPAPI.DLL", Entrypoint:="SetupCopyOEMInfW", setlasterror:=True, _
CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SetupCopyOEMInf( _
<MarshalAs(UnmanagedType.VBByRefStr)> ByRef T0 As String, _
<MarshalAs(UnmanagedType.VBByRefStr)> ByRef OEMSouceMediaLocation As String, _
<[In]()> ByVal OEMSourceMediaType As Integer, _
<[In]()> ByVal CopyStyle As Integer, _
<[Out](), [Optional]()> ByRef DestinationInfFileName As String, _
<[In]()> ByVal DestinationInfFileNameSize As Integer, _
<[Out](), [Optional]()> ByRef RequiredSize As Integer, _
<[Out](), [Optional]()> ByRef DestinationInfFileNameComponent As String _
) As Boolean
End Function
<StructLayout(LayoutKind.Sequential)> _
Public Structure OBO_TOKEN
<MarshalAs(UnmanagedType.I4)> _
Public Type As Integer
<MarshalAs(UnmanagedType.IUnknown)> _
Public pncc As Object
<MarshalAs(UnmanagedType.LPWStr)> _
Public pszwManufacturer As String
<MarshalAs(UnmanagedType.LPWStr)> _
Public pszwProduct As String
<MarshalAs(UnmanagedType.LPWStr)> _
Public pszwDisplayName As String
<MarshalAs(UnmanagedType.Bool)> _
Public fRegistered As Boolean
End Structure
Interface`s:
<Guid("C0E8AE93-306E-11D1-AACF-00805FC1270E"), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown), _
ComVisible(True)> _
Friend Interface INetCfg
Function Initialize(ByVal pvReserved As System.IntPtr) As Integer
Function Uninitialize() As Integer
Function Apply() As Integer
Function Cancel() As Integer
Function EnumComponents(ByVal pguidClass As System.IntPtr, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppenumComponent As Object) As Integer
Function FindComponent(<MarshalAs(UnmanagedType.LPWStr)> ByVal pszwInfId As String, <MarshalAs(UnmanagedType.IUnknown)> ByRef pComponent As Object) As Integer
Function QueryNetCfgClass(ByRef pguidClass As System.Guid, ByRef riid As System.Guid, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As Integer
End Interface
<ComImport(), _
ComVisible(True), _
Guid("C0E8AE9F-306E-11D1-AACF-00805FC1270E"), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface INetCfgLock
Inherits IUnknown
Function AcquireWriteLock(<MarshalAs(UnmanagedType.I4)> ByVal cmsTimeout As System.Int32, <MarshalAs(UnmanagedType.LPWStr)> ByVal pszwClientDescription As String, <MarshalAs(UnmanagedType.LPWStr)> ByVal ppszwClientDescription As String) As Integer
Function ReleaseWriteLock() As Integer
Function IsWriteLocked(<MarshalAs(UnmanagedType.LPWStr)> ByVal ppszwClientDescription As String) As Integer
End Interface
<Guid("C0E8AE97-306E-11D1-AACF-00805FC1270E"), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown), _
ComVisible(True)> _
Friend Interface INetCfgClass
Function FindComponent(<MarshalAs(UnmanagedType.LPWStr)> ByVal pszwInfId As String, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppnccItem As Object) As Integer
Function EnumComponents(<MarshalAs(UnmanagedType.IUnknown)> ByRef ppenumComponent As Object) As Integer
End Interface
<ComVisible(True), _
Guid("C0E8AE9D-306E-11D1-AACF-00805FC1270E"), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
Friend Interface INetCfgClassSetup
Function SelectAndInstall(ByVal hwndParent As System.IntPtr, ByVal pOboToken As System.IntPtr, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppnccItem As Object) As Integer
Function Install(<MarshalAs(UnmanagedType.LPWStr)> ByVal pszwInfId As String, ByVal pOboToken As System.IntPtr, <MarshalAs(UnmanagedType.U4)> ByVal dwSetupFlags As Integer, <MarshalAs(UnmanagedType.U4)> ByVal dwUpgradeFromBuildNo As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal pszwAnswerFile As String, <MarshalAs(UnmanagedType.LPWStr)> ByVal pszwAnswerSections As String, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppnccItem As Object) As Integer
Function DeInstall(<MarshalAs(UnmanagedType.IUnknown)> ByVal pComponent As Object, ByVal pOboToken As System.IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByRef pmszwRefs As String) As Integer
End Interface
<ComVisible(True), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown), _
Guid("C0E8AE99-306E-11D1-AACF-00805FC1270E")> _
Friend Interface INetCfgComponent
Function GetDisplayName(<MarshalAs(UnmanagedType.LPWStr)> ByRef ppszwDisplayName As String) As Integer
Function SetDisplayName(<MarshalAs(UnmanagedType.LPWStr)> ByVal pszwDisplayName As String) As Integer
Function GetHelpText(<MarshalAs(UnmanagedType.LPWStr)> ByRef pszwHelpText As String) As Integer
Function GetId(<MarshalAs(UnmanagedType.LPWStr)> ByRef ppszwId As String) As Integer
Function GetCharacteristics(<MarshalAs(UnmanagedType.U4)> ByRef pdwCharacteristics As Integer) As Integer
Function GetInstanceGuid(ByVal pGuid As System.Guid) As Integer
Function GetPnpDevNodeId(<MarshalAs(UnmanagedType.LPWStr)> ByRef ppszwDevNodeId As String) As Integer
Function GetClassGuid(ByVal pGuid As System.Guid) As Integer
Function GetBindName(<MarshalAs(UnmanagedType.LPWStr)> ByRef ppszwBindName As String) As Integer
Function GetDeviceStatus(<MarshalAs(UnmanagedType.U4)> ByRef pulStatus As Integer) As Integer
Function OpenParamKey(<MarshalAs(UnmanagedType.U4)> ByVal phkey As System.IntPtr) As Integer
Function RaisePropertyUi(ByVal hwndParent As System.IntPtr, <MarshalAs(UnmanagedType.U4)> ByVal dwFlags As Integer, <MarshalAs(UnmanagedType.IUnknown)> ByVal punkContext As Object) As Integer
End Interface
<ComImport(), _
ComVisible(False), _
Guid("00000000-0000-0000-C000-000000000046"), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IUnknown
Function QueryInterface(ByRef pguidClass As System.Guid, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As Integer
Function AddRef() As Integer
Function Release() As Integer
End Interface
+
SetupCopyOEMInf(InfPath, Nothing, 1, 0, Nothing, 0, Nothing, Nothing)
'
Dim IID_INetCfg As Guid _
= New Guid("C0E8AE93-306E-11D1-AACF-00805FC1270E") _
, CLSID_CNetCfg As Guid _
= New Guid("5B035261-40F9-11D1-AAEC-00805FC1270E") _
, IID_INetCfgLock As Guid _
= New Guid("C0E8AE9F-306E-11D1-AACF-00805FC1270E") _
, IID_DevClassNet As Guid _
= New Guid("4D36E972-E325-11CE-BFC1-08002BE10318") _
, IID_INetCfgClass As Guid _
= New Guid("C0E8AE97-306E-11D1-AACF-00805FC1270E") _
, IID_INetCfgClassSetup As Guid _
= New Guid("C0E8AE9D-306E-11D1-AACF-00805FC1270E") _
, IPtr As [IntPtr] = Nothing
'
Dim NetCfg As INetCfg _
= Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_CNetCfg, True)) _
, NetCfgClassSetup As INetCfgClassSetup = Nothing _
, NetCfgComponent As INetCfgComponent = Nothing _
, NetCfgClass As INetCfgClass = Nothing _
, NetCfgLock As INetCfgLock = Nothing
'
If Marshal.IsComObject(NetCfg) Then
'
Marshal.QueryInterface( _
Marshal.GetIUnknownForObject(NetCfg) _
, IID_INetCfgLock, IPtr)
'
NetCfgLock = Marshal.GetObjectForIUnknown(IPtr)
'
'-----------------
'lock`ing network:
'-----------------
NetCfgLock.AcquireWriteLock(UInt64.Parse("15000"), "DRINST", Nothing)
'
NetCfg.Initialize(System.IntPtr.Zero)
'
NetCfg.QueryNetCfgClass(IID_DevClassNet, IID_INetCfgClass, NetCfgClass)
'
NetCfg.QueryNetCfgClass(IID_DevClassNet, IID_INetCfgClassSetup, NetCfgClassSetup)
'
Dim OboToken As New [OBO_TOKEN]
OboToken.Type = 1
IPtr = Marshal.AllocHGlobal(Marshal.SizeOf(OboToken))
Marshal.StructureToPtr(OboToken, IPtr, True)
NetCfgClassSetup.Install("ID", IPtr, 2, 0, Nothing, Nothing, NetCfgComponent)
'
NetCfg.Apply()
'
'-------------------
'Unlock`ing network:
'-------------------
NetCfgLock.ReleaseWriteLock()
'
End If
DRINST_INF.zip
-----------------
На†уралист™ [0QH1-512-В40201]
Thanks
modified on Sunday, October 10, 2010 6:59 PM
|