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 함수를 사용하여 구성을 선택할 수 있습니다.
디바이스에 하나 이상의 USB 인터페이스가 있는 경우 드라이버에서 이 함수를 사용할 수 있습니다.
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES 함수는 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS 구조체를 0으로 설정하고 Size 멤버를 구조체의 크기로 설정합니다.
numInterfaces 또는 SettingPairs가 NULL인 경우 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACESType 멤버를 WdfUsbTargetDeviceSelectConfigTypeMultiInterface로 설정합니다. 이 경우 프레임워크는 사용 중인 인터페이스 수를 결정하고 각각에 대해 0을 대체 설정하도록 설정합니다. 모든 인터페이스에서 기본값으로 대체 설정 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 |
머리글 | 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