SP_DEVICE_INTERFACE_DETAIL_DATA (Structures)
Last changed: -62.231.151.3

.

The SP_DEVICE_INTERFACE_DETAIL_DATA structure provides detailed information about a particular device interface.

C# Definition:

  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]
  struct NativeDeviceInterfaceDetailData
  {
    public int    size;
    public char   devicePath;
  }

Members:

size

Size of the structure, in bytes.

devicePath

NULL-terminated string that specifies the device path.

Example:

  unsafe internal string GetDeviceInterfaceDetail(ref DeviceInterfaceData.NativeDeviceInterfaceData devIfaceData)
  {
    NativeDeviceInterfaceDetailData* devIfaceDetailData = null;

    try
    {
      int devIfaceDetailDataSize = 0;

      for (;;)
      {
    int result = SetupDiGetDeviceInterfaceDetail(
      _devInfoList, ref devIfaceData, ref *devIfaceDetailData,
      devIfaceDetailDataSize, out devIfaceDetailDataSize, IntPtr.Zero);

    if (result == 0 && Marshal.GetLastWin32Error() != ErrorInsufficientBuffer)
      throw new Win32Exception();

    if (result != 0)
      break;

    Marshal.FreeHGlobal((IntPtr)devIfaceDetailData);
    devIfaceDetailData = (NativeDeviceInterfaceDetailData*)Marshal.AllocHGlobal(devIfaceDetailDataSize);

    devIfaceDetailData->size = Marshal.SizeOf(
      typeof(NativeDeviceInterfaceDetailData));
      }

      return Marshal.PtrToStringAuto(new IntPtr(&devIfaceDetailData->devicePath));

    }
    finally
    {
      Marshal.FreeHGlobal((IntPtr)devIfaceDetailData);
    }
  }

Documentation