問題タブ [wdm]
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.
driver - .reload コマンドの後にターゲットへの接続が失われる
WinDbg: ファイル -> シンボル ファイル パス? パスを次のように設定しました:
Srv*c:\symbols*https://msdl.microsoft.com/download/symbols
このパス ファイルの設定後、この例を作成しようとしています:
https://msdn.microsoft.com/en-us/library/windows/hardware/mt269367
セクション 5 のステップ 2 で.reload /f
デバッガーがターゲットへの接続を失いました。シンボル ファイルのパスを設定しないと、WinDbg も同じ時点で壊れてしまいます。
私にとっては、windbg がターゲットへの接続を失い、再度確立されないようです。VM でターゲット システムを再起動しても。
誰かが何が起こっているのか、何が間違っているのか、なぜこれが起こるのか教えてもらえますか??
VMWare Player を使用しています。私のホストとターゲット OS は Windows 10 Pro です。VMWare は、NAT でネットワークを使用するように構成されています。Echo ドライバーが正常にインストールされました。
以下では、WinDbg ログを確認できます。
よろしく。
c - リンク: エラー LNK2001: 未解決の外部シンボル NtProcessStartup
Windows ドライバーの開発とミニフィルターは初めてで、コマンド ライン ツールを使用してnullFilterサンプルをビルドしようとしています。そこで#pragma comment(lib, "FltMgr.lib")
、.c ファイルに追加し、次のコマンドを正常に発行しました。
ただし、sysファイルを作成しようとすると:
VS2012 Express と WDM8 を使用しています。私のLIB環境変数は次のとおりです。
私は何を間違っていますか?何か不足していますか?
windows - acpi イベント通知を登録する方法は?(AcpiInterfaces.RegisterForDeviceNotifications)
今、acpi driver に関数を追加したいと思います。関数は次のとおりです。 BIOS Notify を取得します。私はいくつかのドキュメントを検索し、コードを書きます
CompletionRoutine は STATUS_SUCCESS を返しますが、インターフェイスはまだ空です...
Parameters.QueryInterface.Interface が満たされていません...誰か助けてくれますか??? MSDN IRP_MN_QUERY_INTERFACE について ここにリンクの説明を 入力 ここに画像の説明を入力
windows - C (カーネル モード ドライバー) を使用して Windows カーネル ダンプを作成する
Windows でカーネル モード ドライバーを使用して、完全なメモリ ダンプとカーネル メモリ ダンプを作成する必要があります。
WinDBG を使用して.dumpコマンドを実行するのと同じですが、コード内で実行する必要があります。
そうする方法はありますか?
windows - devmgmt の無効化とアンインストールを Windows ドライバー コードと区別するにはどうすればよいですか?
WDK7 の Microsoft Toaster のサンプル コードを調べていると、微妙な問題が見つかりました。
現在、Windows 7 でコンパイル済みドライバー (WDM busenum および WDM featuring1) を試しています。
READMEenum -p 1
に従ってトースター デバイスを追加し、デバイス マネージャー (devmgmt) を開き、デバイスを見つけてアンインストールします。
これにより、トースターのdevnodeが破壊されます(私は信じています)。ToasterDevice01ノードがデバイス マネージャーから消えていることがわかります。!devnode 0 1
State=DeviceNodeUninitialized (0x301)、Previous State=DeviceNodeRemoved (0x312) のトースター devnode がまだ存在することを示しています。
次に、enum -p 1
再度デバイスを追加しようとして実行します。しかし、エラー 0x57(ERROR_INVALID_PARAMETER) が発生しました。
ソース コードをデバッグし、その理由を特定しましたbuspdo.c
。devmgmt の無効化操作とアンインストール操作を区別していません。彼のコード ロジックは次のとおりです。
- toaster がサプライズリムーブ( ) を取得した場合、どちらが正しい動作であるかを
enum -u 1
呼び出します。Bus_DestroyPdo()
- toaster が devmgmt から Disabled になった場合、それはを呼び出しません
Bus_DestroyPdo()
。これも正しいです。
問題は、エンド ユーザーが devmgmt からアンインストールを実行すると、Disable パスをたどるということです。ここで悪いことが起こります: Windows はトースター devnode を削除しますが、トースター バス ドライバーは対応する PDO を破棄しませenum -p 1
んBus_PlugInDevice()
。ユーザーリクエスト。
ところで:トースターのKMDFバージョンは同様の問題を示しています(今日は静的列挙バージョンのみが試行されました)
これで私の質問は明確になりました。無効化とアンインストールをどのように区別できますか?バス ドライバーまたは子デバイス ドライバーでそれを行う必要がありますか? KMDF版の回答も大歓迎です。
c++ - IRP_MJ_WRITE を使用した IoBuildAsynchronousFsdRequest
ディスク ドライバーで WDM フィルター ドライバーを開発しました。ディスクにデータを書き込む非同期リクエストを送信したいと考えています。writeBuffer
関数内のメモリを削除すると、ウィンドウがクラッシュしWriteDataIRPCompletion
ます。
私の質問は、どうすれwriteBuffer
ばクラッシュせずにメモリを安全に解放できるでしょうか?
これは私の送信リクエストコードです:
これは私の完了ルーチンコードです: