通信リソース ハンドル
プロセスでは、CreateFile 関数を使用して通信リソースへのハンドルを開きます。 たとえば、COM1 を指定すると、シリアル ポートへのハンドルが開き、LPT1 は並列ポートへのハンドルを開きます。 指定されたリソースが現在別のプロセスで使用されている場合、CreateFile は失敗します。 プロセスのすべてのスレッドは、CreateFile によって返されるハンドルを使用して、リソースにアクセスする関数内のリソースを識別できます。
プロセスが CreateFile を呼び出して通信リソースを開くと、以下の属性が指定されます。
- 指定されたリソースに対して存在する読み取り/書き込みアクセスの種類。
- 子プロセスによってハンドルを継承できるかどうか。
- ハンドルを重複 (非同期) I/O 操作で使用できるかどうか。 (重複操作の説明については、「同期」をご覧ください)。
プロセスで CreateFile を使用して通信リソースを開くときは、以下のパラメーターに特定の値を指定する必要があります。
- fdwShareMode パラメーターは 0 でなければなりません。排他アクセスでリソースを開きます。
- fdwCreate パラメーターは、OPEN_EXISTING フラグを指定する必要があります。
- hTemplateFile パラメーターは NULL でなければなりません。
CreateFile を使用してデバイスに対して直接ハンドルを開く場合、アプリケーションは特殊文字 "\\ .\" を使用してデバイスを識別する必要があります。 たとえば、ドライブ A に対してハンドルを開くには、CreateFile の lpszName パラメーターに \\ .\a: を指定します。 呼び出し元のプロセスは、DeviceIoControl 関数のハンドルを使用して、コントロール コードをデバイスに送信できます。