WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES関数 (wdfusb.h)
[KMDF と UMDF に適用]
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES関数は、ドライバーが複数のインターフェイスを使用するようにデバイスを構成できるように、WDF_USB_DEVICE_SELECT_CONFIG_PARAMS構造体を初期化します。
構文
void WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES(
[in, out] PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params,
[in, optional] UCHAR NumberInterfaces,
[in, optional] PWDF_USB_INTERFACE_SETTING_PAIR SettingPairs
);
パラメーター
[in, out] Params
ドライバーによって割り当てられた WDF_USB_DEVICE_SELECT_CONFIG_PARAMS 構造体へのポインター。
[in, optional] NumberInterfaces
SettingPairs 配列内の要素の数。 SettingPairs が NULL でない場合、このパラメーターは 0 より大きい値である必要があります。
[in, optional] SettingPairs
WDF_USB_INTERFACE_SETTING_PAIR構造体の配列。 このパラメーターは省略可能であり、 NULL にすることができます。
戻り値
なし
解説
デバイス インターフェイスが USB インターフェイス オブジェクトへのハンドルによって指定されている場合、ドライバーは WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES 関数を使用して構成を選択できます。
ドライバーは、デバイスに 1 つ以上の USB インターフェイスがある場合に、この関数を使用できます。
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES関数は、WDF_USB_DEVICE_SELECT_CONFIG_PARAMS構造体をゼロにし、Size メンバーを構造体のサイズに設定します。
numInterfaces または SettingPairs が NULL の場合、WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACESは Type メンバーを WdfUsbTargetDeviceSelectConfigTypeMultiInterface に設定します。 この場合、フレームワークは持っているインターフェイスの数を決定し、それぞれで代替設定ゼロを有効にします。 すべてのインターフェイスで既定で代替設定 0 を設定する場合は、この設定を使用します。
numInterfaces パラメーターと SettingPairs パラメーターの両方が NULL でない場合、この関数は、WDF_USB_DEVICE_SELECT_CONFIG_PARAMS構造体の Type メンバーを WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs に設定します。 この場合は、任意のインターフェイスで代替設定を指定できます。
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS構造体を初期化するには、ドライバーは次のいずれかの関数を呼び出す必要があります。
- WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES
-
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_INTERFACES_DESCRIPTORS
例
次のコード例では、デバイス構成 で サポートされているインターフェイスの数に基づいて、 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACEまたはWDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACESを呼び出します。 次に、この例では WdfUsbTargetDeviceSelectConfig を呼び出して構成を選択します。
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS params;
PWDF_USB_INTERFACE_SETTING_PAIR settingPairs;
UCHAR numInterfaces;
numInterfaces = WdfUsbTargetDeviceGetNumInterfaces(UsbDevice);
if (numInterfaces == 1){
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE(¶ms);
}
else {
settingPairs = ExAllocatePoolWithTag(
PagedPool,
sizeof(WDF_USB_INTERFACE_SETTING_PAIR) * numInterfaces,
MEM_TAG
);
if (settingPairs == NULL){
return STATUS_INSUFFICIENT_RESOURCES;
}
//
// Call driver-defined routine to populate the
// WDF_USB_INTERFACE_SETTING_PAIR structures
// that ExAllocatePoolWithTag allocated.
//
InitSettingPairs(
UsbDevice,
settingPairs,
numInterfaces
);
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES(
¶ms,
numInterfaces,
settingPairs
);
}
status = WdfUsbTargetDeviceSelectConfig(
UsbDevice,
NULL,
¶ms
);
if (!NT_SUCCESS(status)) {
return status;
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdfusb.h (Wdfusb.h を含む) |
こちらもご覧ください
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_DECONFIG
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_INTERFACES_DESCRIPTORS
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE