Beispiel #1
0
        private void RegisterNotification(Guid guid)
        {
            DeviceBroadcastStructures.DEV_BROADCAST_DEVICEINTERFACE devIF = new DeviceBroadcastStructures.DEV_BROADCAST_DEVICEINTERFACE();
            IntPtr devIFBuffer;

            // Set to HID GUID
            devIF.dbcc_size       = Marshal.SizeOf(devIF);
            devIF.dbcc_devicetype = DeviceBroadcastStructures.DBT_DEVTYP_DEVICEINTERFACE;
            devIF.dbcc_reserved   = 0;
            devIF.dbcc_classguid  = guid;

            // Allocate a buffer for DLL call
            devIFBuffer = Marshal.AllocHGlobal(devIF.dbcc_size);

            // Copy devIF to buffer
            Marshal.StructureToPtr(devIF, devIFBuffer, true);

            // Register for HID device notifications
            m_hNotifyDevNode = DeviceBroadcastStructures.RegisterDeviceNotification((new WindowInteropHelper(_ParentWindow)).Handle, devIFBuffer, DeviceBroadcastStructures.DEVICE_NOTIFY_WINDOW_HANDLE);

            // Copy buffer to devIF
            Marshal.PtrToStructure(devIFBuffer, devIF);

            // Free buffer
            Marshal.FreeHGlobal(devIFBuffer);
        }
Beispiel #2
0
 // Unregister HID device notification
 private void UnregisterNotification()
 {
     uint ret = DeviceBroadcastStructures.UnregisterDeviceNotification(m_hNotifyDevNode);
 }