/// <summary> /// Convert (WM_DEVICECHANGE)WM_MESSAGE pointer to data structure /// </summary> /// <param name="lParam"></param> /// <returns></returns> protected string PointerToDevicePath(IntPtr lParam) { Native.DEV_BROADCAST_DEVICEINTERFACE devBroadcastDeviceInterface = new Native.DEV_BROADCAST_DEVICEINTERFACE(); Native.DEV_BROADCAST_HDR devBroadcastHeader = new Native.DEV_BROADCAST_HDR(); Marshal.PtrToStructure(lParam, devBroadcastHeader); Int32 stringSize = Convert.ToInt32((devBroadcastHeader.dbch_size - 32) / 2); Array.Resize(ref devBroadcastDeviceInterface.dbcc_name, stringSize); Marshal.PtrToStructure(lParam, devBroadcastDeviceInterface); return(new String(devBroadcastDeviceInterface.dbcc_name, 0, stringSize)); }
// Specify what you want to happen when the Elapsed event is raised. //private void enumerateTimedEvent(object source, ElapsedEventArgs e) //{ // Update(); //} /// <summary> /// Registers a window to receive notifications when USB devices are plugged or unplugged. /// </summary> /// <param name="windowHandle"></param> /// <returns></returns> public IntPtr RegisterHIDDeviceNotification(IntPtr windowHandle) { Native.DEV_BROADCAST_DEVICEINTERFACE dbi = new Native.DEV_BROADCAST_DEVICEINTERFACE { dbcc_size = 0, dbcc_devicetype = (int)Native.DBT_DEVTYP_DEVICEINTERFACE, dbcc_reserved = 0, dbcc_classguid = GUID_DEVINTERFACE_HID.ToByteArray() }; dbi.dbcc_size = Marshal.SizeOf(dbi); IntPtr buffer = Marshal.AllocHGlobal(dbi.dbcc_size); Marshal.StructureToPtr(dbi, buffer, true); return(Native.RegisterDeviceNotification(windowHandle, buffer, 0)); }
/// <summary> /// Convert (WM_DEVICECHANGE)WM_MESSAGE pointer to data structure /// </summary> /// <param name="lParam"></param> /// <returns></returns> protected string PointerToDevicePath(IntPtr lParam) { Native.DEV_BROADCAST_DEVICEINTERFACE devBroadcastDeviceInterface = new Native.DEV_BROADCAST_DEVICEINTERFACE(); Native.DEV_BROADCAST_HDR devBroadcastHeader = new Native.DEV_BROADCAST_HDR(); Marshal.PtrToStructure(lParam, devBroadcastHeader); Int32 stringSize = Convert.ToInt32((devBroadcastHeader.dbch_size - 32) / 2); Array.Resize(ref devBroadcastDeviceInterface.dbcc_name, stringSize); Marshal.PtrToStructure(lParam, devBroadcastDeviceInterface); return new String(devBroadcastDeviceInterface.dbcc_name, 0, stringSize); }
// Specify what you want to happen when the Elapsed event is raised. //private void enumerateTimedEvent(object source, ElapsedEventArgs e) //{ // Update(); //} /// <summary> /// Registers a window to receive notifications when USB devices are plugged or unplugged. /// </summary> /// <param name="windowHandle"></param> /// <returns></returns> public IntPtr RegisterHIDDeviceNotification(IntPtr windowHandle) { Native.DEV_BROADCAST_DEVICEINTERFACE dbi = new Native.DEV_BROADCAST_DEVICEINTERFACE { dbcc_size = 0, dbcc_devicetype = (int)Native.DBT_DEVTYP_DEVICEINTERFACE, dbcc_reserved = 0, dbcc_classguid = GUID_DEVINTERFACE_HID.ToByteArray() }; dbi.dbcc_size = Marshal.SizeOf(dbi); IntPtr buffer = Marshal.AllocHGlobal(dbi.dbcc_size); Marshal.StructureToPtr(dbi, buffer, true); return Native.RegisterDeviceNotification(windowHandle, buffer, 0); }