有一点背景,我正在尝试校准一个USB加速度计,当它从usb驱动器中移除时开始计时,我怀疑时间有点偏,这导致我的问题......
有没有办法看到设备被删除的确切时间?
我可以用毫秒来做这个时间,这可以用c#以编程方式解决,还是在Windows 7中有某个日志?我愿意接受任何解决方案。
答案 0 :(得分:1)
您可以编写一个简单的C#应用程序并订阅Win API通知,以便系统更改设备节点。
API函数RegisterDeviceNotification允许您订阅您的应用程序或服务,以便在设备发生更改时通知Windows(即热插拔)。
您的C#应用程序必须在启动时调用register方法,然后应用程序必须处理应用程序WndProc中的WM_DEVICECHANGED事件。根据您是选择编写WPF应用程序还是WinForms应用程序,访问WndProc的方式会略有不同。
WM_DEVICECHANGED消息将WParam设置为特定值,具体取决于设备是刚刚插入,是否已被删除,或者是否已完全删除。在您的情况下,您可能希望使用DBT_DEVICEREMOVECOMPLETE消息。
然后,您可以让C#应用程序记录移除设备的完全时间。请注意,时间戳的准确性取决于实际移除的设备与接收和处理通知的应用程序之间存在的延迟。没有系统级时间戳,因此必须这样做。但它应该精确到“几”毫秒。