@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: This method retrieves the status of a device instance from its device node (devnode) in the local machine's device tree. !!!!C# Signature: // devInst is an uint32 - this matters on 64-bit [DllImport("cfgmgr32.dll", SetLastError=true)] static extern int CM_Get_DevNode_Status(out UInt32 status, out UInt32 probNum, UInt32 devInst, int flags); !!!!VB Signature: <DllImport("cfgmgr32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _ Private Shared Function CM_Get_DevNode_Status(ByRef status As ULong, ByRef probNum As ULong, ByVal devInst As IntPtr, ByVal Flag As Integer) As Integer End Function !!!!User-Defined Types: static readonly int CR_SUCCESS = 0x00000000; !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: The return type is either int or uint. !!!!Tips & Tricks: Please add some! !!!!Sample Code: If CM_Get_DevNode_Status(status, problem, DeviceInfoData.DevInst, 0) = CR_SUCCESS Then Dim sbDesc As New StringBuilder("") Dim MAX_LEN As Integer = 512 Dim propRegDataType As Integer = 0 sbDesc.Capacity = MAX_LEN Dim reqSize As Integer = 0 SetupDiGetDeviceRegistryProperty(NewDeviceInfoSet, DeviceInfoData, DirectCast(SPDRP_FRIENDLYNAME, Integer), propRegDataType, sbDesc, MAX_LEN, reqSize) If sbDesc.ToString() = "" Then SetupDiGetDeviceRegistryProperty(NewDeviceInfoSet, DeviceInfoData, DirectCast(SPDRP_DEVICEDESC, Integer), propRegDataType, sbDesc, MAX_LEN, reqSize) End If If sbDesc.ToString() = "" Then sbDesc.Append("Unknown Description") End If Dim sbHWID As New StringBuilder("") sbHWID.Capacity = MAX_LEN SetupDiGetDeviceRegistryProperty(NewDeviceInfoSet, DeviceInfoData, DirectCast(SPDRP_HARDWAREID, Integer), propRegDataType, sbHWID, MAX_LEN, reqSize) Dim scanResult As New ScanResults(sbHWID.ToString(), sbDesc.ToString()) Console.WriteLine("Device Detected: {0} - {1}", sbDesc.ToString(), sbHWID.ToString()) Dim deviceInstallParams As New SP_DEVINSTALL_PARAMS() deviceInstallParams.cbSize = Marshal.SizeOf(GetType(SP_DEVINSTALL_PARAMS)) SetupDiGetDeviceInstallParams(NewDeviceInfoSet, DeviceInfoData, deviceInstallParams) deviceInstallParams.DriverPath = "D:\STK1160_AVStream_ATV_20070831" If Not SetupDiBuildDriverInfoList(NewDeviceInfoSet, DeviceInfoData, SPDIT_COMPATDRIVER) Then Dim eCode As Integer = Marshal.GetLastWin32Error() Console.WriteLine(vbTab & "Error Building Driver Info List. Code: {0}", eCode) End If Dim memIndex As Integer = 0 Dim drvErr As Integer = 0 Dim drvData As New SP_DRVINFO_DATA() drvData.cbSize = Marshal.SizeOf(GetType(SP_DRVINFO_DATA)) Dim enumResult As Boolean = SetupDiEnumDriverInfo(NewDeviceInfoSet, DeviceInfoData, SPDIT_COMPATDRIVER, memIndex, drvData) If Not enumResult Then drvErr = Marshal.GetLastWin32Error() Console.WriteLine(vbTab & "Error Enumerating Driver Info. Code: {0}", drvErr) End If 'While enumResult AndAlso drvErr <> ERROR_NO_MORE_ITEMS ' System.Math.Max(System.Threading.Interlocked.Increment(memIndex), memIndex - 1) ' End While SetupDiDestroyDriverInfoList(NewDeviceInfoSet, DeviceInfoData, SPDIT_COMPATDRIVER) End If Documentation: CM_Get_DevNode_Status@msdn on MSDN
Edit setupapi.CM_Get_D...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.