none
仮想COMポートドライバからのアプリケーションへの送信 RRS feed

  • 質問

  • 前回は、大変お世話になりました。
    また、わからないことがあるので、質問させてください。

    現在、仮想COMポートドライバ作成を目指しています。
    WDKのサンプル(C:\WinDDK\7600.16385.1\src\serial\VirtualSerial)を変更にして、作成しようとしているのですが、
    ドライバから自作アプリへのデータの送信方法がわかりません。

    自作アプリから送信(System.IO.Ports.SerialPortクラスのWriteLine()を使っての送信)は、問題なく仮想COMポートのドライバで受信できます。
    VirtualSerialのCMyQueue::OnWrite()メソッドが呼び出されて送信した内容を確認することができました。

    そこで、今度は反対に、仮想COMポートドライバから自作アプリへデータの送信を行い、
    自作アプリのSerialPortクラスのDataReceivedイベントで、COMからのデータを受信したいのですが、
    何をどうしてよいのか、見当がつきません。

    ■ 質問
    ドライバからアプリへのデータ送信するにはドライバで何を行ったらよいのでしょうか。

    漠然とした質問で申し訳ありませんが、よろしくお願いいたします。
    • 移動 Mike Wang (MSCS) 2012年10月2日 12:48 (移動元:Windows デバイスドライバー開発)
    2011年7月8日 0:37

すべての返信

  • ■ 質問
    ドライバからアプリへのデータ送信するにはドライバで何を行ったらよいのでしょうか。

    漠然とした質問で申し訳ありませんが、よろしくお願いいたします。


    仮想デバイス(例えばモデム等)からデータを受信した状態にしたいのなら、CMyQueueのm_RingBufferが受信バッファですので、CRingBuffer::Write( )を呼び出して、必要なデータをセットすれば良いです。
    ユーザーモードのアプリケーションプログラムは、API経由でこの受信バッファから受信データを読み出すことができます。
    ※一応、サンプルを変更したドライバで確認済みです。


    以前書いたように、このVirtualSerialサンプルドライバの利用には、いろいろと問題が有りそうですが大丈夫ですか?
    http://social.msdn.microsoft.com/Forums/ja-JP/windowsdevicedriverja/thread/0f2e3205-ad0f-44aa-b7cd-3f853c8ac948/#8a514227-c9fd-44b7-bbaf-d1d9d02c648c

    それから、デバイスドライバをテストする時には、Win32 APIを直接使ってテストすることをお勧めします
    何らかのライブラリ経由でテストするのは、Win32 APIを使ったテストの後にしたほうが良いです。

     


    2011年7月12日 1:02