少し背景がありますが、USBドライブから取り外した瞬間にタイミングを開始するUSB加速度計を調整しようとしていますが、タイミングが少しずれていると思われます。これが問題につながります...
デバイスが取り外された正確な時刻を確認する方法はありますか?
私はミリ秒単位の時間で行うことができますが、これはc#を使用してプログラムで解決できるものですか、それともWindows 7のどこかにログがありますか?私はどんな解決策にもオープンです。
シンプルな C# アプリを作成し、システムによるデバイス ノードの変更に関する Win API 通知をサブスクライブできます。
API 関数RegisterDeviceNotificationを使用すると、アプリケーションまたはサービスをサブスクライブして、デバイスに変更が発生したとき (つまり、ホットプラグまたはアンプラグ) に Windows から通知を受けることができます。
C# アプリケーションは、起動時に register メソッドを呼び出す必要があります。その後、アプリケーションはアプリケーションの WndProc 内でWM_DEVICECHANGEDイベントを処理する必要があります。WndProc にアクセスする方法は、WPF アプリケーションと WinForms アプリケーションのどちらを作成するかによって、若干異なります。
WM_DEVICECHANGED メッセージでは、デバイスが接続されたばかりか、取り外されているか、または完全に取り外されたかに応じて、WParam が特定の値に設定されます。あなたの場合、おそらくDBT_DEVICEREMOVECOMPLETEメッセージを使用したいと思うでしょう。
その後、デバイスが取り外された正確な時刻を C# アプリに記録させることができます。タイムスタンプの精度は、デバイスが実際に削除されてから、アプリケーションが通知を受信して処理するまでの遅延に依存することに注意してください。利用可能なシステムレベルのタイムスタンプがないため、それを行う必要があります。ただし、 「数」ミリ秒以内の精度である必要があります。