問題タブ [wdf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wdf - WDF - サンドボックス用フィルター ドライバー
一部のプログラムのファイル (ReadFile、WriteFile) 操作とレジストリ呼び出しをインターセプトしたいと考えています。フィルタードライバーが最適なソリューションになると判断しました。WDF からそれを行うことは可能ですか、それとも WDM を学ぶ必要がありますか? サンプルはありますか?
windows - USB High Speed EHCI 2.0 ハブを強制的に Full Speed UHCI/OHCI デバイスとして列挙する
Windows XP SP3 には、EHCI USB 2.0 高速ハブをホスト レベルで UHCI または OHCI フル スピード デバイスとして列挙できるレジストリ キーまたは何らかの設定があり、おそらくレジストリのデバイス レベルでもありますか?
USB 1.1 フルスピード デバイスが、高速ハブ上のトランザクション トランスレータ バッファで無限に NAKd 分割トランザクションが原因でデッドロックするという問題が発生しています。これは、フル スピード デバイスが 2.0 高速ハブの背後に接続されている特定の状況でのみ発生します (XP SP3 のみ)。Microsoft に問題を報告しましたが、これは既知の問題であり、この問題に対する修正プログラムはありません (開発される予定もありません)。Vista+では修正されています。
デバイスがホスト コントローラに直接接続されている場合、または高速ハブのアップストリームにフル スピード ハブがある場合、問題は解消されます (分割トランザクションがないため)。そのため、高速ハブを強制的に全速デバイスとして列挙する方法があれば、それが役立つ可能性があります。
さらに、ハードウェアの設計もしっかりしています。システムが開発されましたが、フルスピードのハブ チップを設計のどこにでも挿入したり、デバイスをルート ハブに直接接続したりする方法はありません。最後に、システムの OS をアップグレードするオプションはありません。
windows - DevicePath からの USB PID VID の抽出
SetupDiGetDeviceInterfaceDetail を使用して、接続されている USB デバイスに関連する SP_DEVICE_INTERFACE_DETAIL_DATA を取得すると、DevicePath という文字列が返されます。
返される文字列は、次の例のようにフォーマットされます。
\?\usb#vid_abcd&pid_1234#000000000#{xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
質問 : この文字列の書式設定/構文はどこかに文書化されていますか、または Windows XP/Vista/7/8 のすべてのバージョンで信頼できることが知られていますか?
参照されているデバイスを識別するために、この文字列から VID および PID 値を抽出するコードを試していますが、これが VID および PID 値を取得するための堅牢な方法であるかどうかを知りたいです。
c - ObRegisterCallbacks に登録されたコールバックがまだ有効かどうかを確認する方法はありますか?
Vista SP1 以降で利用可能なObRegisterCallbacksは、「スレッドおよびプロセス ハンドル操作のコールバック ルーチンのリストを登録する」ことを許可します。
たとえば、PsSetCreateProcessNotifyRoutineコールバックを登録しています。PC Hunter
x86 Windowsにはカーネルレベルのパッチガードがないため、ソフトウェアを使用して設定を解除できます。また、ドライバーは、このコールバックで呼び出されなくなったことを知りませんでした。
質問:
- ObRegisterCallbacks に登録されたコールバックがまだ有効であることをドライバーが確認するにはどうすればよいですか?
- ObRegisterCallbacks
STATUS_FLT_INSTANCE_ALTITUDE_COLLISION
の 2 回目の呼び出し中のエラーは、コールバックの状態を確認する正しい方法ですか? - ObRegisterCallbacksで登録されたすべてのコールバックのリストを取得する方法はありますか?
windows - ユーザーモードでの Windows の仮想ディスクドライバー?
仮想ディスクのドライバをユーザー モードでのみ実装することは可能ですか、それともカーネル モードで行う必要がありますか?
windows - Windows 8 で BSOD を引き起こす WDF ドライバーのバグを見つける方法
WDF ドライバーを維持する必要があります。これはハードウェアのないドライバーです。ドライバーは、Windows パーティションとしてマウントされたディスク ファイルを使用します。ディスクに書き込まれるすべてのデータは、ドライバーによって暗号化されます。ドライバーはカーネル モードで実行されます。
ドライバは XP で開発され、Vista および 7、32、64 ビットに正常に移植されました。Windows 8 で 1 つの大きな問題に遭遇しました。ドライバーが致命的なシステム エラーを引き起こしました。
この問題は、WdfObjectDelete() でデバイスを削除した後に発生します。デバイスが削除されない限り、ドライバーは正常に動作し、システム エラーは発生しません。WdfObjectDelete が呼び出されると、一定の遅延の後にシステムがクラッシュします。
verifierはドライバーでエラーを検出しませんでした。私の質問は次のとおりです。
- Windows 8 の WDF に関して何か特別なことはありますか?
- ドライバーのバグを見つけるのに役立つツール/テクニックはありますか?
file-io - Filesystem Minifilter 削除ドライバーの実行可能性チェック
msdn の削除ミニフィルターの例をベースとして使用しています: http://code.msdn.microsoft.com/windowshardware/Delete-File-System-b904651d
私が達成する必要があるのは:
- DfPreCleanupCallback で削除候補へのハンドルを取得します。
- DfPostCleanupCallback - ハンドルが取得されていない場合、ファイルを削除する必要があると判断します。
- また、DfPostCleanupCallback で - 削除されたであろうファイルに対していくつかの操作を実行し、ハンドルを解放します。また、次回 IRP_MJ_CLEANUP に入ったときに削除を保証して、無限ループを回避します。
私はミニフィルターとフィルター マネージャーについて非常に漠然とした理解を持っているので、ミニフィルターの世界を深く掘り下げる前に、原則としてこれが可能かどうかを知りたいと思います。
短いバージョン - ファイルが間違いなく削除されると判断し、そのファイルに対して何らかの操作を行う方法が必要です。
filesystems - ミニフィルター ドライバー IRP_MJ_CLEANUP preop コールバックで削除されるファイルの名前を変更する
私の目標は、削除される直前にファイルの内容と名前を上書きすることです-削除されたファイルを消去します。
ミニフィルター ドライバーと、最後の削除操作の直前に呼び出されるクリーンアップ前のコールバック ルーチンを使用しようとしています。
これまでのところ、作成/変更/アクセスの日付を取り除き、削除される直前にファイルの内容を上書きすることができました.
ただし、ファイル名と所有者情報を変更することはできません。
FltSetFileInformation を使用してファイルの名前を変更できることがわかりましたが、クリーンアップ中にファイルが適切に削除されません。shift+delete で削除されますが、ディスク上のファイル名は元のままです。通常の削除だけでは、ごみ箱には移動しません (おそらく、新しい名前が付けられたため、移動できないためです。)
ミニフィルターの制御フローは、私には少し不明確です。たとえば、FltWriteFile を呼び出すと、別の IRP が送信されるだけで、同期または非同期で送信されますか。
IRP 内で削除したいファイルの名前を変更するにはどうすればよいですか?