WDF_USB_CONTINUOUS_READER_CONFIG 구조체(wdfusb.h)
[KMDF 및 UMDF에 적용]
WDF_USB_CONTINUOUS_READER_CONFIG 구조에는 프레임워크가 USB 파이프에 대한 연속 판독기를 구성하는 데 사용하는 정보가 포함되어 있습니다.
구문
typedef struct _WDF_USB_CONTINUOUS_READER_CONFIG {
ULONG Size;
size_t TransferLength;
size_t HeaderLength;
size_t TrailerLength;
UCHAR NumPendingReads;
PWDF_OBJECT_ATTRIBUTES BufferAttributes;
PFN_WDF_USB_READER_COMPLETION_ROUTINE EvtUsbTargetPipeReadComplete;
WDFCONTEXT EvtUsbTargetPipeReadCompleteContext;
PFN_WDF_USB_READERS_FAILED EvtUsbTargetPipeReadersFailed;
} WDF_USB_CONTINUOUS_READER_CONFIG, *PWDF_USB_CONTINUOUS_READER_CONFIG;
멤버
Size
이 구조체의 크기(바이트)입니다.
TransferLength
디바이스에서 수신할 수 있는 데이터의 최대 길이(바이트)입니다.
HeaderLength
디바이스에서 데이터를 수신하는 버퍼에 대한 오프셋(바이트)입니다. 프레임워크는 오프셋 값부터 시작하여 디바이스의 데이터를 읽기 버퍼에 저장합니다. 즉, 이 공간은 프레임워크가 디바이스의 데이터를 저장하는 TransferLength 크기의 공간보다 우선합니다.
TrailerLength
후행 버퍼 공간의 길이(바이트)입니다. 이 공간은 프레임워크가 디바이스의 데이터를 저장하는 TransferLength 크기의 공간을 따릅니다.
NumPendingReads
프레임워크가 I/O 대상에서 데이터를 수신하기 위해 큐에 대기하는 읽기 요청 수입니다. 이 값이 0이면 프레임워크는 기본 읽기 요청 수를 사용합니다. 지정된 값이 허용되는 최대값보다 크면 프레임워크는 허용되는 최대값을 사용합니다. NumPendingReads 멤버에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.
BufferAttributes
프레임워크가 각 읽기 요청에 대해 만드는 프레임워크 메모리 개체의 개체 특성을 지정하는 WDF_OBJECT_ATTRIBUTES 구조체입니다. 이 멤버는 NULL일 수 있습니다. WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버를 설정할 수 없습니다.
EvtUsbTargetPipeReadComplete
드라이버의 EvtUsbTargetPipeReadComplete 콜백 함수에 대한 포인터입니다.
EvtUsbTargetPipeReadCompleteContext
프레임워크가 드라이버의 EvtUsbTargetPipeReadComplete 콜백 함수에 전달하는 드라이버 정의 컨텍스트 정보에 대한 형식화되지 않은 포인터입니다.
EvtUsbTargetPipeReadersFailed
드라이버의 EvtUsbTargetPipeReadersFailed 콜백 함수에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다. 이 매개 변수에 대한 자세한 내용은 WdfUsbTargetPipeConfigContinuousReader의 설명 섹션을 참조하세요.
설명
WDF_USB_CONTINUOUS_READER_CONFIG 구조체는 WdfUsbTargetPipeConfigContinuousReader 메서드에 대한 입력으로 사용됩니다.
WDF_USB_CONTINUOUS_READER_CONFIG 구조를 초기화하려면 드라이버가 WDF_USB_CONTINUOUS_READER_CONFIG_INIT 호출해야 합니다.
NumPendingReads 멤버에 대한 값을 선택할 때 다음 지침을 사용합니다.
-
드라이버가 프레임워크의 기본값을 사용하도록 하려면 NumPendingReads 를 0으로 설정합니다.
기본값은 1보다 크며 많은 프로세서 구성에서 많은 디바이스에 대해 합리적으로 좋은 성능을 제공하도록 결정되었습니다.
- 드라이버가 데이터를 전달하는 정확한 순서로 데이터 버퍼를 받는 것이 중요한 경우 NumPendingReads 를 1로 설정합니다.
-
NumPendingReads를 철저한 성능 측정을 기반으로 디바이스의 성능 요구 사항을 충족하는 숫자로 설정합니다.
먼저 NumPendingReads에 대한 기본값(0)으로 디바이스를 테스트합니다. 테스트에는 다양한 형식과 프로세서 수, 다른 USB 호스트 컨트롤러 및 USB 구성을 포함한 다양한 하드웨어 구성이 포함되어야 합니다. 그런 다음 동일한 테스트를 사용하여 더 높은 값으로 실험할 수 있습니다. 더 높은 값이 필요할 수 있는 드라이버는 인터럽트 속도가 높은 디바이스에 대한 드라이버로, 인터럽트 서비스가 신속하게 수행되지 않으면 데이터가 손실될 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfusb.h(Wdfusb.h 포함) |