IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME I/O 要求は、USB ホスト コントローラーのデバイス名をバス ドライバーに照会します。
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME は、カーネル モードの I/O 制御要求です。 この要求は、USB ハブ PDO を対象とします。 この要求は、PASSIVE_LEVELの IRQL で送信する必要があります。
メジャー コード
IRP_MJ_INTERNAL_DEVICE_CONTROL
[入力バッファー]
Parameters.Others.Argument1 は、ホスト コントローラーの名前で入力される USB_HUB_NAME 構造体へのポインターである必要があります。
入力バッファーの長さ
Parameters.Others.Argument2 は、 Parameters.Others.Argument1 のバッファーの長さをバイト単位で指定する ULONG である必要があります。
出力バッファー
バス ドライバーは、 Parameters.Others.Argument1 が指すバッファーにホスト コントローラーのデバイス名を入力します。
出力バッファーの長さ
この値は、 Parameters.Others.Argument2 で指定された長さまで入力されます。
ステータス ブロック
バスまたはポート ドライバーは、Irp-IoStatus.Status> をSTATUS_SUCCESSまたは適切なエラー状態に設定します。
注釈
呼び出し元は、 USB_HUB_NAME 構造体を保持するのに十分な大きさのバッファーを提供する必要があります。 Parameters.Others.Argument2 値は、そのバッファーのサイズを示します。 正常に完了すると、USB_HUB_NAME の HubName メンバーにはコントローラーの名前が含まれており、ActualLength メンバーはコントローラー名文字列の長さを示します。 ActualLength は、USB_HUB_NAME構造体全体のサイズを示すものではありません。 Parameters.Others.Argument1 で指定されたバッファーが文字列を保持するのに十分な大きさでない場合、HubName 値に切り捨てられた文字列が表示されることがあります。
文字列を保持するために必要なバッファーのサイズを取得するには、要求を 2 回送信します。 最初の要求で、少なくとも sizeof(USB_HUB_NAME)
バイトであるバッファーを指定します。 それ以外の場合、 ActualLength は文字列の正しい長さを示せず、要求はSTATUS_BUFFER_TOO_SMALLで失敗します。
最初の要求が正常に完了したら、バイトの ActualLength + sizeof(ULONG)
バッファーを割り当てて、要求をもう一度送信します。 要求が完了すると、 HubName はコントローラー名の文字列全体を示します。
要件
要件 | 値 |
---|---|
Header | usbioctl.h |