次の方法で共有


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_NAMEHubName メンバーにはコントローラーの名前が含まれており、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

こちらもご覧ください

USB_HUB_NAME