コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: jtdirk/COMList
        private void RegisterNotification(Guid guid)
        {
            Dbt.DEV_BROADCAST_DEVICEINTERFACE devIF = new Dbt.DEV_BROADCAST_DEVICEINTERFACE();
            IntPtr devIFBuffer;

            // Set to HID GUID
            devIF.dbcc_size       = Marshal.SizeOf(devIF);
            devIF.dbcc_devicetype = Dbt.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 = Dbt.RegisterDeviceNotification((new WindowInteropHelper(this)).Handle, devIFBuffer, Dbt.DEVICE_NOTIFY_WINDOW_HANDLE);

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

            // Free buffer
            Marshal.FreeHGlobal(devIFBuffer);
        }
コード例 #2
0
ファイル: WDSFrameWindow.cs プロジェクト: x893/WDS
 private void RegisterNotification()
 {
     Dbt.DEV_BROADCAST_DEVICEINTERFACE dev_broadcast_deviceinterface;
     Guid hidGuid = new Guid();
     Hid.GetHidGuid(ref hidGuid);
     dev_broadcast_deviceinterface = new Dbt.DEV_BROADCAST_DEVICEINTERFACE
     {
         dbcc_devicetype = 5,
         dbcc_reserved = 0,
         dbcc_classguid = hidGuid
     };
     dev_broadcast_deviceinterface.dbcc_size = Marshal.SizeOf(dev_broadcast_deviceinterface);
     IntPtr ptr = Marshal.AllocHGlobal(dev_broadcast_deviceinterface.dbcc_size);
     Marshal.StructureToPtr(dev_broadcast_deviceinterface, ptr, true);
     m_hNotifyDevNode = Dbt.RegisterDeviceNotification(base.Handle, ptr, 0);
     Marshal.PtrToStructure(ptr, dev_broadcast_deviceinterface);
     Marshal.FreeHGlobal(ptr);
 }