次の方法で共有


PPARALLEL_TRY_SELECT_ROUTINE コールバック関数 (parallel.h)

PPARALLEL_TRY_SELECT_ROUTINE型コールバック ルーチンは、IEEE 1284.3 デイジー チェーン デバイスまたは並列ポートに接続されている IEEE 1284 チェーン終了デバイスを選択します。 並列ポート用のシステム提供の関数ドライバーは、このルーチンを提供します。

構文

PPARALLEL_TRY_SELECT_ROUTINE PparallelTrySelectRoutine;

NTSTATUS PparallelTrySelectRoutine(
  [in] PVOID TrySelectContext,
  [in] PVOID TrySelectCommand
)
{...}

パラメーター

[in] TrySelectContext

並列ポートの機能デバイス オブジェクト (FDO) のデバイス拡張機能へのポインター。

[in] TrySelectCommand

PARALLEL_1284_COMMAND構造体へのポインター。 呼び出し元は、次のメンバーを指定します。

id

1284.3 デバイス ID を指定します。

CommandFlags

次のフラグの 0 個以上のビットごとの OR を指定します。

説明
PAR_END_OF_CHAIN_DEVICE チェーン終了デバイスを指定します。
PAR_HAVE_PORT_KEEP_PORT 呼び出し元に割り当てられたポートと、割り当てられたポートを保持することを指定します。

戻り値

リターン コード 説明
STATUS_SUCCESS
デバイスが選択されました。
STATUS_INVALID_PARAMETER
デバイス ID が無効です。
STATUS_PENDING
呼び出し元はPAR_HAVE_PORT_KEEP_PORTを指定しておらず、並列ポートは既に割り当てられています。
STATUS_UNSUCCESSFUL
呼び出し元は並列ポートを割り当てたが、並列ポート用のシステム提供の関数ドライバーは、指定された並列デバイスを選択できませんでした。

注釈

システム提供の PPARALLEL_TRY_SELECT_ROUTINE コールバックへのポインターを取得するために、カーネル モード ドライバーは 、PARALLEL_PNP_INFORMATION 構造体を返す IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO 要求を使用します。 PARALLEL_PNP_INFORMATION構造体の TrySelectDevice メンバーは、このコールバックへのポインターです。

カーネル モード ドライバーは、 IOCTL_INTERNAL_SELECT_DEVICE 要求または PPARALLEL_TRY_SELECT_ROUTINE コールバックを使用して、並列ポート上の並列デバイスを選択できます。 並列ポート関数ドライバーは、並列ポートが既に割り当てられている場合、選択要求をキューに入れます。 ただし、 PPARALLEL_TRY_SELECT_ROUTINE コールバックは選択要求をキューに入れません。ポートを割り当てることができない場合、ルーチンは直ちにを返します。

メモ クライアントが並列デバイスの選択を試みるために PPARALLEL_TRY_SELECT_ROUTINE コールバックのみを使用し、他のクライアントが並列ポートを競合している場合、並列ポート用のシステム提供の関数ドライバーは、クライアントにポートを割り当てない可能性があります。 成功を確実にするために、クライアントは IOCTL_INTERNAL_SELECT_DEVICE 要求を使用する必要があります。 (並列ポート関数ドライバー キュー、その後、ポート割り当て要求とデバイス選択要求を、選択したデバイス要求を受信した順序で処理します)。
 
詳細については、「 ParallelPort に接続されている IEEE 1284 デバイスの選択と選択解除」を参照してください。

要件

要件
対象プラットフォーム デスクトップ
Header parallel.h (Parallel.h を含む)
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

PARALLEL_1284_COMMAND

IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO

IOCTL_INTERNAL_SELECT_DEVICE

IOCTL_INTERNAL_DESELECT_DEVICE

PARALLEL_PNP_INFORMATION

PPARALLEL_DESELECT_ROUTINE