スキップしてメイン コンテンツへ

 locked
V4 プリンター ドライバのデバッガアタッチ方法 RRS feed

  • 全般的な情報交換

  • (※ 2017 年 1 月 5 日に Japan WDK Support Blogに公開した情報のアーカイブです。)

    V4 プリンター ドライバをデバッグするときに、どのようにデバッガをアタッチすればよいか困ったことはありませんか?

     

    明けましておめでとうございます!WDK サポートチームの石沢です。

    今回は V4 プリンタドライバのレンダリングフィルタに Visual Studio をアタッチする方法をまとめたいと思います。

    なお、ドライバパッケージの作成に関しては、まさかたさんの以下の記事を参考にしてください。今回はすでにドライバパッケージが出来上がっているものとして進めます。

     

    プリンター用デバイスアプリのサンプルを動かしてみる

    https://social.msdn.microsoft.com/Forums/ja-JP/22a2e44f-ddad-48f0-92dd-96d9ff246082/-?forum=wdksupportteamja

     

    プリンタドライバのデバッグ方法については、基本的には A 尾さんの以下の記事が元となっているのですが、実際にレンダリングフィルタのソースコード上でブレイクするところまでやってみたいと思います。

     

    プリンタドライバやスプーラ コンポーネントをデバッグする

    https://social.msdn.microsoft.com/Forums/ja-JP/5ab77501-cf2e-4cf5-932a-2f55a426f3c9/-?forum=wdksupportteamja

     

    具体的なデバッグまでの道のりは以下となります。

     

    <デバッグまでの道のり>

    1. V4 プリンター ドライバのインストール

    2. PrintFilterPipelineSvc サービスのタイムアウト時間の設定

    3. アプリケーションからの印刷 その 1

    4. PrintFilterPipelineSvc サービスにデバッガをアタッチ

    5. アプリケーションからの印刷 その 2

     

    なお、今回動作を確認した環境は以下です。

     

    OS: Windows 10 x86 Enterprise

    ・デバッガ: Visual Studio 2015 Enterprise

     

    では実際に進めてみましょう!

     

     

    1. V4 プリンター ドライバのインストール

    それでは最初に皆様が作成された V4 プリンター ドライバのパッケージをインストールしましょう。

    ここでは Visual Studio の 「Printer Driver V4」テンプレートを基にして作成したドライバを使用しています。

     

    clip_image002

     

    コントロールパネルから、「デバイスとプリンターの表示」を選択し、さらの「プリンターの追加」を選択。

    さらに、プリンター ドライバのパッケージからインストールするため、表示されたウィンドウの「プリンターが一覧にない場合」を選択します。

     

    clip_image003

     

    ローカル プリンターとしてインストールするため、「ローカルプリンターまたはネットワーク プリンターを手動設定で追加する」を選択して次に進みます。

     

    clip_image004

     

    次にプリンター ポートの設定ですが、ここでは、「既存のポートを使用」を選択し、「FILE: (ファイルへ出力)」を選択します。

     

    clip_image005

     

    次のウィンドウで「ディスクを使用」からドライバパッケージ内の INF ファイルを選択して、想定通りのドライバが表示されれば OK です!

    次にすすんで

     

    clip_image006

     

    後はずんずん進んで以下のウィンドウが表示されればインストール完了です。

     

    clip_image007

     

    2. PrintFilterPipelineSvc サービスのタイムアウト時間の設定

    次に、アタッチ先であるPrintFilterPipelineSvc サービスのタイムアウト時間を変更しておきましょう。

    詳細については、前述の A 尾さんの記事 (プリンタ ドライバやスプーラ コンポーネントをデバッグする) をご参考ください。

    ここでは以下のようにタイムアウト時間を 10 分に設定しました。

     

    clip_image008


    2019年1月28日 5:19
    所有者

すべての返信

  • 3. アプリケーションからの印刷 その 1

    それでは PrintFilterPipelineSvc サービスを動作させましょう。

    方法は簡単です。メモ帳などのアプリケーションからインストールしたプリンターを選択して印刷しましょう。

     

    clip_image009

     

    印刷後、タスク マネージャーに Print Filter Pipeline Host というプロセスが表示されれば OK です!

     

    clip_image011

     

    4. PrintFilterPipelineSvc サービスにデバッガをアタッチ

    それでは実際にアタッチしてみます。

    Visual Studio を起動して、メニューの「デバッグ」から「プロセスにアタッチ」を選択。

     

    clip_image012

     

    表示されたウィンドウの「すべてのユーザーからのプロセスを表示する」にチェックを入れ、一覧の中から ”printerpipelinesvc.exe” を選択。

    [アタッチ] をクリックしてアタッチ完了です。

     

    clip_image013

     

    Visual Studio を実行しているユーザー権限によっては以下のようなメッセージが表示される場合があります。

    その場合は「異なる資格情報で再起動」を選択してから、もう一度アタッチしてみてください。

     

    clip_image014

     

    ついでにブレイクポイントも設定しておきましょう。

    ここでは Printer Driver V4 テンプレートで実装されている RenderFilter クラスのコンストラクタに仕掛けておくことにします。

     

    clip_image016

     

    5. アプリケーションからの印刷 その 2

    では改めて手順 3 と同じようにメモ帳から印刷を行いましょう。

     

    clip_image017

     

    はい!ブレイクしましたね。

    これでプリンター ドライバも煮るなり焼くなり好きに料理できるようになりました。今回はここまでとなります。

     

    今回ご案内差し上げた内容は、知らないと途方に暮れてしまうかもしれないのですが、知っていればそれほど難しい内容ではないかと思います。

    皆様も是非お試しいただけますと幸いです。

     

    WDK サポートチーム 石沢 望夢

    2019年1月28日 5:20
    所有者