プロが教えるわが家の防犯対策術!

現在PCMCIAカードを使って、シリアル通信のプログラムを作成中です。
市販品なので、サンプルプログラムがあり、
サンプルの中にはシリアル通信するための関数(C言語)が多々あります。

その関数を呼び出すときにどれもデバイスハンドルのポインタ情報が入っている変数を
含んでいるようです。
(コンピュータの内部には詳しくなく、日本語がおかしいかもしれません)
例えば、aがデバイスハンドルのポインタで関数がFだとすると、メインでは
F(a)
となっております。

このデバイスハンドルというのはどういうものなのでしょうか?
またこの場合のデバイスハンドルはどのように調べれば値がわかるのでしょうか?
(Windowsのシステム情報を見れば分かる等)

もし情報が足りなければ補足いたします。
よろしくお願いいたします。

A 回答 (1件)

> このデバイスハンドルというのはどういうものなのでしょうか?



Windows が管理しているリソース (この場合はデバイス) 情報へのポインタのようなものです.

ハンドル (アスキー デジタル用語辞典)
http://yougo.ascii24.com/gh/15/001551.html

アプリケーションは直接その情報にアクセスするのではなく,
Windows API 関数にハンドルを渡すことでアクセスします.


> またこの場合のデバイスハンドルはどのように調べれば値がわかるのでしょうか?

ハンドルは WinNT.h の中で,次のように定義されています.

typedef void *HANDLE;

ですから,アプリケーションがハンドルを普通のポインタのように参照して
デバイス情報にアクセスすることはできませんし,してはいけません.
上に書いたように,デバイス情報を得る場合には専用の API 関数を使用してください.
アプリケーションがハンドルの値を調べるのは,それが有効か否か
(INVALID_HANDLE_VALUE (ハンドルの種類によっては NULL) と等しいか否か)
を調べるだけにしてください.

MSDN がインストールされていれば,COM ポート用に関連する API の一覧は,
"Communications Functions" で検索すれば出てきます.
これらを用いると,COM ポートの情報を取得・設定したり,制御したりすることができます.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!