@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Returns a SP_DEVINFO_DATA structure that specifies a device information element in a device information set. !!!!C# Signature: [DllImport("setupapi.dll", SetLastError=true)] static extern bool SetupDiEnumDeviceInfo(IntPtr DeviceInfoSet, uint MemberIndex, ref SP_DEVINFO_DATA DeviceInfoData); !!!!VB Signature: <DllImport("setupapi.dll", _ EntryPoint:="SetupDiEnumDeviceInfo", _ SetLastError:=True, _ CharSet:=CharSet.Unicode, _ ExactSpelling:=True, _ PreserveSig:=True, _ CallingConvention:=CallingConvention.Winapi)> _ Private Shared Function SetupDiEnumDeviceInfo( _ ByVal DeviceInfoSet As Integer, _ ByVal MemberIndex As Integer, _ ByRef DeviceInfoData As SP_DEVINFO_DATA) As Boolean End Function !!!!VB.Net Signature: Private Declare Auto Function SetupDiEnumDeviceInfo Lib "setupapi.dll" ( _ ByVal DeviceInfoSet As Integer, _ ByVal MemberIndex As Integer, _ ByRef DeviceInfoData As SP_DEVINFO_DATA) As Boolean !!!!User-Defined Types: [SP_DEVINFO_DATA] !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: The SetupDiEnumDeviceInfo function retrieves a context structure for a device information element of the specified device information set. Each call returns information about one device. The function can be called repeatedly to get information about several devices. Parameters DeviceInfoSet [in] Handle to the device information set containing the devices for which to return element information. MemberIndex [in] Zero-based index to the list of interfaces in the device information set. You should first call this function with the MemberIndex parameter set to zero to obtain the first interface. Then, repeatedly increment MemberIndex and retrieve an interface until this function fails and GetLastError returns ERROR_NO_MORE_ITEMS (259). DeviceInfoData [out] Pointer to an SP_DEVINFO_DATA structure that receives information about this element. You must set the cbSize member to sizeof(SP_DEVINFO_DATA) before calling this function. Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. !!!!Tips & Tricks: Please add some! !!!!Sample Code: static string GetDescriptionByKeyName(string DriverKeyName) { string ans = ""; string DevEnum = REGSTR_KEY_USB; // Use the "enumerator form" of the SetupDiGetClassDevs API // to generate a list of all USB devices IntPtr h = SetupDiGetClassDevs(0, DevEnum, IntPtr.Zero, DIGCF_PRESENT | DIGCF_ALLCLASSES); if (h.ToInt32() != INVALID_HANDLE_VALUE) { IntPtr ptrBuf = Marshal.AllocHGlobal(BUFFER_SIZE); string KeyName; bool Success = true; int i = 0; while (Success) { // create a Device Interface Data structure SP_DEVINFO_DATA da = new SP_DEVINFO_DATA(); da.cbSize = Marshal.SizeOf(da); // start the enumeration Success = SetupDiEnumDeviceInfo(h, i, ref da); if (Success) { int RequiredSize = 0; int RegType = REG_SZ; KeyName = ""; if (SetupDiGetDeviceRegistryProperty(h, ref da, SPDRP_DRIVER, ref RegType, ptrBuf, BUFFER_SIZE, ref RequiredSize)) { KeyName = Marshal.PtrToStringAuto(ptrBuf); } // is it a match? if (KeyName == DriverKeyName) { if (SetupDiGetDeviceRegistryProperty(h, ref da, SPDRP_DEVICEDESC, ref RegType, ptrBuf, BUFFER_SIZE, ref RequiredSize)) { ans = Marshal.PtrToStringAuto(ptrBuf); } break; } } i++; } Marshal.FreeHGlobal(ptrBuf); SetupDiDestroyDeviceInfoList(h); } return ans; } Documentation: SetupDiEnumDeviceInfo@msdn on MSDN
Edit setupapi.SetupDiE...
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.