問題タブ [kmdf]

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.

0 投票する
1 に答える
459 参照

visual-studio-2015 - デバッガーは、ネットワーク接続を介して vs 2015 Professional で KMDF ドライバーに侵入できません。

update2 を使用して、Visual Studio 2015 Professional でリモート ドライバーのデバッグをセットアップしようとしています。私のホスト コンピューターは Windows 8.1 ホーム エディション 64 ビットで実行されており、ターゲットは Windows 10 ホーム エディション 64 ビットで実行される別のコンピューターです。ネットワーク経由でターゲット コンピューターを正常にプロビジョニング/構成できます。次に、F5 キーを押して KMDF ドライバーをデバッグ/展開します。ドライバーの展開に約 2 分かかり、展開の表示が停止します。展開のプロセスが終了したと思います。ターゲット サイトのデバイス マネージャー、ドライバーは正常にインストールされていますが、デバッガーを中断するために [すべて中断] ボタンを押しても何も起こらず、デバッガーを中断できません。kd コンソール ウィンドウ (つまり、kd > ) は無効のまま (灰色)、コマンドを入力できません。つまり、これはドライバーの

以下は、デプロイ段階での「Debugger Immediate Window」の出力に関する情報です。この問題を解決するのに数週間かかりましたが、まだできません。誰かが私を助けたり、アドバイスをくれたりしてくれることを願っています。

0 投票する
1 に答える
480 参照

visual-studio - VS 2015 エンタープライズ用のテンプレートのインストール

私は VS 2015 を持っており、Windows Driver Kit 10.0 も持っていますが、VS 2015 Enterprise では、KMDF 関連の開発を記述するためのテンプレートが見つかりませんでした。KMDF や WDF のテンプレートを検索してインストールしようとしましたが、見つかりませんでした。VS 2015 エンタープライズ エディションに KMDF テンプレートをインストールするにはどうすればよいですか? ありがとう

0 投票する
1 に答える
102 参照

windows - 2台のコンピューターを接続した後の別のコンピューターでのドライバーのデバッグ

別のコンピューターでプログラムのデバッグを必要とするプロジェクトを開始しようとしています。基本的に私はファイル システム フィルター ドライバーを書いています。そしてそれは窓にあります。そのためには、ドライバーのデバッグを別のシステムで行う必要があります。

1 つのシステム (Windows 7) でドライバーを実行し、別のシステム (Windows 8.1) の Visual Studio IDE でデバッグできるように、2 台のコンピューターを接続する方法を知る必要があります。

更新: msdn で次の記事が提供されています https://msdn.microsoft.com/en-us/library/windows/hardware/hh439665(v=vs.85).aspx

ドライバーの作成は表示されますが、2 台のコンピューターを接続する方法が指定されていません。それが私の質問です。VS でリモート デバッグを行う方法と、2 台のコンピューターを接続するためのセットアップを行う方法

どんな助けでも大歓迎です、ありがとう

0 投票する
1 に答える
283 参照

windows - KMDF WdfDriverCreate 関数が「リソース不足」を返す

カスタム PCIe ボードをターゲットとする kmdf ドライバーを作成しようとしています。Microsoft が提供するデフォルト プロジェクトに従って、主に文字列の名前を変更し、PCIe ボードのハードウェア ID を指定して、.inf ファイルにいくつかの小さな変更を加えました。

ドライバーの展開は正常に機能します。ドライバーがインストールされ、デバイス マネージャーに表示されますが、正しくインストールされていないか、破損している可能性があると表示されます。

デバッグ時に、リソース不足を意味する 0xC000009A のエラーで WdfDriverCreate が失敗することがわかります。

参考までに、これは kmdf テンプレート プロジェクトによって生成されたコードで、現在実行しているものです。

私の最初の質問は、何が原因でしょうか?

実行してエラーが発生した後、ログをダンプしようとしました

しかし、それは決して機能しません。以下に示すように、すべてのシンボルパスが適切にロードされていることを確認しました

「CIPDriver」は私のドライバーです。

dump コマンドを実行すると、次のような出力が表示されます。

そして .sympath の出力

C:\winsymbols は、次のガイドに従って取得した Microsoft のシンボルのキャッシュです: https://msdn.microsoft.com/en-us/library/windows/hardware/ff558829(v=vs.85).aspx

2 番目の質問は、ログをダンプするようにデバッガを正しくセットアップするにはどうすればよいですか?

ありがとう

0 投票する
1 に答える
131 参照

c++ - KMDF ドライバーに fstream.h を含めた後のリンカー エラー

私はドライバー開発の初心者です。これは私のコードです:

次のエラーのリストが生成されます。

0 投票する
1 に答える
211 参照

windows - WDF 内部 IOCTL が出力を返さない

現在、仮想 COM ポートを公開するドライバーを作成しています。ドライバーでは、ポート FDO から内部 IOCTL をスタックに送信します。これは、PDO IO キューから処理されます。何らかの理由で、出力データが提供された出力メモリに書き込まれません。

IoCtl_Vcp_GetPortInfo (下記参照) が呼び出され、意図したとおりに動作することを windbg で確認しました。要求は STATUS_SUCCESS で完了します。WdfRequestComplete を呼び出した時点で、出力バッファーには有効なデータが含まれています。ただし、制御が GetPortInfo (以下を参照) に戻ったとき、提供されたバッファは上書きされていません。これは、受信バッファへのアクセスにハードウェア ブレークポイントを設定して確認しました。WdfIoTargetSendInteralIoctlSynchronously の呼び出し中は、読み取りも書き込みも行われません。

IOCTL の送信を担当するコードは次のとおりです。

IOCTL を処理するコード:

IOCTL コード定義:

0 投票する
1 に答える
243 参照

windows - devmgmt の無効化とアンインストールを Windows ドライバー コードと区別するにはどうすればよいですか?

WDK7 の Microsoft Toaster のサンプル コードを調べていると、微妙な問題が見つかりました。

現在、Windows 7 でコンパイル済みドライバー (WDM busenum および WDM featuring1) を試しています。

READMEenum -p 1に従ってトースター デバイスを追加し、デバイス マネージャー (devmgmt) を開き、デバイスを見つけてアンインストールします。

devmgmt.msc からトースター デバイスをアンインストールします。

これにより、トースターのdevnodeが破壊されます(私は信じています)。ToasterDevice01ノードがデバイス マネージャーから消えていることがわかります。!devnode 0 1State=DeviceNodeUninitialized (0x301)、Previous State=DeviceNodeRemoved (0x312) のトースター devnode がまだ存在することを示しています。

次に、enum -p 1再度デバイスを追加しようとして実行します。しかし、エラー 0x57(ERROR_INVALID_PARAMETER) が発生しました。

enum -p 1 、0x57 エラーが発生しました

ソース コードをデバッグし、その理由を特定しましたbuspdo.c。devmgmt の無効化操作とアンインストール操作を区別していません。彼のコード ロジックは次のとおりです。

  • toaster がサプライズリムーブ( ) を取得した場合、どちらが正しい動作であるかをenum -u 1呼び出します。Bus_DestroyPdo()
  • toaster が devmgmt から Disabled になった場合、それはを呼び出しませBus_DestroyPdo()。これも正しいです。

問題は、エンド ユーザーが devmgmt からアンインストールを実行すると、Disable パスをたどるということです。ここで悪いことが起こります: Windows はトースター devnode を削除しますが、トースター バス ドライバーは対応する PDO を破棄しませenum -p 1Bus_PlugInDevice()。ユーザーリクエスト。

ここに画像の説明を入力

ところで:トースターのKMDFバージョンは同様の問題を示しています(今日は静的列挙バージョンのみが試行されました)

これで私の質問は明確になりました。無効化とアンインストールをどのように区別できますか?バス ドライバーまたは子デバイス ドライバーでそれを行う必要がありますか? KMDF版の回答も大歓迎です。

0 投票する
0 に答える
331 参照

windows - プログラムによるドライバー ウィンドウの再起動

私は KMDF pcie ドライバーに取り組んでいます。現在、デバイスを切断/再接続すると、Windows はデバイスが切断されたことを認識せず、ノードを再列挙せず、ドライバーを解放しません。

現在のところ、デバイス マネージャーを使用してドライバーを手動で無効化/有効化するのが最善の方法です。これにより、リロードが発生します。SetupDiSetClassInstallParams と SetupDiCallClassInstaller を使用して、SetupAPI.h を介してこれを手動で実行しようとすると、NO_ASSOCIATED_SERVICE に対応する SetupDiCallClassInstaller で 0xe0000219 エラーが発生し、これに対処する方法がわかりません。プログラムで再起動を強制するより良い方法はありますか?

または、プラグ アンド プレイ EvtDevicePrepareHardware コールバックによって通常提供される、変換されたリソース リスト WDFCMRESLIST を取得する方法はありますか? このようにして、ドライバーを再構成できました。

0 投票する
1 に答える
182 参照

windows - 独自に作成したカーネル ドライバーをインストールできない

を使用して、Windows 10 用のカーネル モード ドライバーに取り組んできましたVisual Studio 2015。Visual Studio の実行を使用して VM (ホスト コンピューターにインストールしたのとまったく同じバージョンの Windows) にドライバーをインストールでき、問題なく動作します。次に、ホスト PC (プライマリ Windows) にインストールします。まず、テスト署名を有効にしました。infドライバーファイルを右クリックし、 [インストール] を選択しました。よろしいですかと聞かれ、 をクリックしましたYes。数秒後、ダイアログ ボックスが表示されますThe operation completed successfully.が、実際には何も起こりません。

  • テスト コンピューター上にある間、ホスト コンピューターのデバイス マネージャーに表示されません。
  • 使用しているドライバーに関連するデバッグ メッセージが DebugView に表示されません。
  • 何も書かれていないsetupact.log

構成を使用してrelease for x64います。プロジェクト構成に欠けているものがあるのだろうか。インストール後にPCの再起動も試みましたが、うまくいきません。誰でも私を助けることができますか?