問題タブ [irp]
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.
windows-7 - MiniFilterDriver-IRP_MJ_CLOSEおよびIRP_MJ_CREATEのファイルバイトを変更します
閉じたときにファイルを変更し、開いたときに変更を元に戻したいのですが。ファイルを暗号化したくないことを除けば、暗号化ドライバーのようなものです。
Visual Studio 2012でWDK8を使用して新しい「フィルタードライバー:ファイルシステムミニフィルター」プロジェクトを作成し、コールバック関数としてPreCreate、PostCreate、PreClose、およびPostCloseを登録しました。
たとえば、バイトが{72,101,108,108,111}( "Hello")であるファイルのIRP_MJ_CLOSEで、PostClose関数の後、ファイルがハードディスク上で次のようになるようにします:{10,11,12,72,101,108,108,111}。
私はそれがただのように簡単ではないと思う:
この件についてのガイダンスが欲しいのですが。
また、これをデバッグするための最良の方法は何ですか?Windows7のデバッグに出力する方法が見つかりません。
ありがとう!gfgqtmakia。
編集:http ://code.msdn.microsoft.com/windowshardware/swapBuffer-File-System-6b7e6e2dを読みましたが、読み取り/書き込み用であるため、役に立たないと思います。対処したい。
EDIT2:または、ファイルがIRPの途中ではなくハードドライブ上にある場合は、PreCreateとPostCloseで変更を行う必要があります。そうすれば、「オンザフライ」でバッファを処理する必要はありません。ディスク?
windows - WdfRequestIsCanceled 対 WdfRequestMarkCancelable
wdf での IO キャンセルに以下の 2 つのアプローチを使用することの長所と短所を誰でも挙げることができますか? 1) WdfRequestMarkCancelable () でリクエストをキャンセル可能としてマークします。キャンセル ルーチンを提供し、完了パスを同期します。2) IRP の処理中に WdfRequestIsCanceled() でポーリングを続けます。戻り値に基づいて完了します。
WdfRequestIsCanceled() はポーリング アプローチであるのに対し、WdfRequestMarkCancelable () は非同期であることを理解しています。しかし、WdfRequestMarkCancelable() は、完了/キャンセル パスを同期するために必要な追加の作業に値するでしょうか?
ご意見ありがとうございます。
c - IRPリクエストを送信するモジュールを取得する方法
カーネルドライバーがあります。プロセス内の私の dll (注入された dll) は、このドライバーに IRP 要求を送信します。このドライバーはどのようにしてこのモジュール ハンドルを取得できますか? IoGetRequestorProcess(Irp)
プロセスではなくモジュールハンドルのようなもの。
windows - UMDF ドライバーからカーネル モード ドライバーに IRP 読み取り/書き込みパケットを送信する
IRP 読み取り/書き込みパケットを作成して、UMDF ドライバーからデバイスを表すカーネル モード ドライバーに送信することはできますか?
windows - IRP_MJ_QUERY_INFORMATION によって引き起こされるディスク アクティビティはどれくらいですか?
IRP_MJ_QUERY_INFORMATION への呼び出しは、Win32 の GetFileInformationByHandle やカーネル モードの ZwQueryInformationFile などの関数によって生成されます。
誰かがこの呼び出しで実際に何が起こっているのか説明してもらえますか? 従来の 7200RPM 磁気ストレージ HDD を使用していると仮定します。
磁気回転ドライブからの読み取りの遅延の多くはシーク時間によるものであることはわかっていますが、私のアプリケーションでは IRP_MJ_QUERY_INFORMATION 呼び出しが非常に高速に見えます。プリフェッチ キャッシュの内容を確認しましたが、そこでクエリを実行しているファイルを確認できませんでした。呼び出しが多いため、メモリのどこかにキャッシュされていると思いますが、非常に迅速に解決され、HDD アクティビティはあまり見られません (間違っている可能性があります)。これらの状況で実際に何が起こるのでしょうか? ファイルは Windows によって別の場所にキャッシュされていますか? もしそうなら、どうすればそれを見ることができますか?
HDDキャッシュもあることは知っていますが、先読みなどのバッファのように機能することを理解しています.
編集: MSDN でこの記事を読んでいたところ、「ファイル システムのメタデータは常にキャッシュされている」ことが示唆されています。これは、ファイルを開いて変更を加えると、「最終更新日」などのメタデータが失われることを意味すると想定しています。ファイルバッファをフラッシュするまでディスクにコミットされません。私の場合、ファイルをクエリしているので、メタデータを変更する必要はありません。Windows は、プログラムによって行われた情報の最初のクエリの後にメタデータをキャッシュしますか?
windows - ブルー スクリーン エラー: DRIVER_RETURNED_HOLDING_CANCEL_LOCK
Windows 7でドライバーを作成します。そして、pedding IRPを使用して、ドライバーからアプリケーションにイベントを送信します。次のようなキーコード:
なんらかのイベントがアプリケーションに通知されたときに機能します。しかし、ドライバーをアンインストールすると、ブルー スクリーン エラーが発生します。グローバル キャンセル ロックを保持しているキャンセル コールからドライバーが戻りました。エラー コード ID 0x011B。私はwindbgトレースを使用し、トレースは「PtDriverCancelIRP」関数で発生します。
このエラーに関連するロックを適用しますか? どうしてか分かりません?どうすれば修正できますか?
PS このドライバは Windows XP ではエラーではありません
kernel - ドライバーから別のドライバー (同じスタック内ではない) への IOCTL 呼び出しを行うにはどうすればよいですか (Windows の場合)
ドライバーからまったく異なる別のドライバーへの IOCTL 呼び出しを行いたい (同じスタック上ではない)
ネットで調べたのですが、IOCTLを下位のドライバに送る方法しか書かれていませんが、私の場合はそうではありません。
ps : どちらのドライバーも私が認識しているので、2 番目のドライバーでデバイス オブジェクトを作成できますが、それと通信するにはどうすればよいですか (カーネルから DeviceIOControl 呼び出しを行うことはできません)。
ありがとう !
filesystems - ミニフィルター ドライバー IRP_MJ_CLEANUP preop コールバックで削除されるファイルの名前を変更する
私の目標は、削除される直前にファイルの内容と名前を上書きすることです-削除されたファイルを消去します。
ミニフィルター ドライバーと、最後の削除操作の直前に呼び出されるクリーンアップ前のコールバック ルーチンを使用しようとしています。
これまでのところ、作成/変更/アクセスの日付を取り除き、削除される直前にファイルの内容を上書きすることができました.
ただし、ファイル名と所有者情報を変更することはできません。
FltSetFileInformation を使用してファイルの名前を変更できることがわかりましたが、クリーンアップ中にファイルが適切に削除されません。shift+delete で削除されますが、ディスク上のファイル名は元のままです。通常の削除だけでは、ごみ箱には移動しません (おそらく、新しい名前が付けられたため、移動できないためです。)
ミニフィルターの制御フローは、私には少し不明確です。たとえば、FltWriteFile を呼び出すと、別の IRP が送信されるだけで、同期または非同期で送信されますか。
IRP 内で削除したいファイルの名前を変更するにはどうすればよいですか?
windows-7 - ST-LINK V2 USB ドライバー WinUSB アクセスが拒否されました
ST-LINK/V2 ドングルを使用して組み込みプロジェクトを開発/デバッグするように構成された Win7/64 開発マシンを (連絡できない他の誰かが) 持っています。PC はドングルを検出してインストールしますが、どのアプリケーションもドングルにアクセスできず、'No ST-Link device detected'
タイプ エラーが発生します。
これが非常にイライラするのは、同じドライバー、ソフトウェア、およびドングルを使用して問題なく動作する別の Win7/64 マシンがあり、マシン間で開発環境を転送できなかったことです。
STATUS_ACCESS_DENIED
WinUSB が各ドングル アクセス要求に対してIRP ステータスを返すことを (USBlyzer を使用して) 発見しました。誰かが以前にこのようなものを見たことがあることを願っています。
PS "STMicroelectronics STLink ドングル ドライバー" の日付は 2010 年 7 月 28 日です。