学习.Net  
C#
[DllImport(@"setupapi.dll", CharSet=CharSet.Auto, SetLastError = true)]
public static extern Boolean SetupDiEnumDeviceInterfaces( IntPtr hDevInfo, IntPtr devInfo, ref Guid interfaceClassGuid, UInt32 memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData );

public struct SP_DEVICE_INTERFACE_DATA
    {
    public int cbSize;
    public Guid InterfaceClassGuid;
    public int Flags;
    public IntPtr RESERVED;
    }

SP_DEVICE_INTERFACE_DATA devData = new SP_DEVICE_INTERFACE_DATA();

devData.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(devData);

// failure to do so will always return false (which is the value you'll also get if the device is not connected)

// Here's what the call looks like...

bool result = Win32Calls.SetupDiEnumDeviceInterfaces(ipDeviceHndl, iLU, ref DeviceGUID, 0, ref devData);

// The DeviceGUID parameter will be device dependant. Look in the Manufacturer's sdk or api for the correct guid for your device

Sample Code:

class Win32Calls
    {
    [DllImport(@"setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern IntPtr SetupDiGetClassDevs(ref Guid classGuid, IntPtr enumerator, IntPtr hwndParent, UInt32 flags);
    [DllImport(@"setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern Boolean SetupDiEnumDeviceInterfaces(IntPtr hDevInfo, IntPtr devInfo, ref Guid interfaceClassGuid, UInt32 memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData);

posted on 2006-04-01 18:22  没有空气  阅读(2528)  评论(0编辑  收藏  举报
 
同时有 个用户访问
hit statistics