EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD 콜백 함수(ucxendpoint.h)
UCX가 정적 스트림을 만들기 위해 호출하는 클라이언트 드라이버의 구현입니다.
구문
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;
NTSTATUS EvtUcxEndpointStaticStreamsAdd(
[in] UCXENDPOINT UcxEndpoint,
[in] ULONG NumberOfStreams,
[in] PUCXSSTREAMS_INIT UcxStaticStreamsInit
)
{...}
매개 변수
[in] UcxEndpoint
엔드포인트를 나타내는 UCXENDPOINT 개체에 대한 핸들입니다.
[in] NumberOfStreams
만들 기본이 아닌 스트림의 수입니다.
[in] UcxStaticStreamsInit
초기화 정보를 포함하는 불투명 구조체에 대한 포인터입니다. 이 구조체는 UCX에서 관리됩니다.
반환 값
작업이 성공하면 콜백 함수는 STATUS_SUCCESS 반환하거나 NT_SUCCESS(상태)이 TRUE인 다른 상태 값을 반환해야 합니다. 그렇지 않으면 NT_SUCCESS(상태)이 FALSE와 같은 상태 값을 반환해야 합니다.
설명
UCX 클라이언트 드라이버는 UcxEndpointCreate 메서드를 호출하여 이 콜백 함수를 UCX(USB 호스트 컨트롤러 확장)에 등록합니다.
이 콜백 함수는 UcxStaticStreamsCreate 메서드를 호출하여 UCX 정적 스트림 개체를 만듭니다. 하나의 UCX 정적 스트림 개체만 단일 엔드포인트와 연결할 수 있습니다. 그런 다음 드라이버는 스트림당 한 번 UcxStaticStreamsSetStreamInfo 를 호출하여 각 스트림에 대한 큐를 만듭니다.
UCX가 클라이언트 드라이버의 EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE 콜백 함수를 호출할 때까지 정적 스트림 개체를 사용할 수 없습니다.
예제
NTSTATUS
Endpoint_EvtEndpointStaticStreamsAdd(
UCXENDPOINT UcxEndpoint,
ULONG NumberOfStreams,
PUCXSSTREAMS_INIT UcxStaticStreamsInit
)
{
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES wdfAttributes;
UCXSSTREAMS ucxStaticStreams;
STREAM_INFO streamInfo;
ULONG streamId;
TRY {
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&wdfAttributes, STATIC_STREAMS_CONTEXT);
status = UcxStaticStreamsCreate(UcxEndpoint,
&UcxStaticStreamsInit,
&wdfAttributes,
&ucxStaticStreams);
// … error handling …
for (i = 0, streamId = 1; i < NumberOfStreams; i += 1, streamId += 1) {
// … create WDF queue …
STREAM_INFO_INIT(&streamInfo,
wdfQueue,
streamId);
UcxStaticStreamsSetStreamInfo(ucxStaticStreams, &streamInfo);
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | ucxendpoint.h(Ucxclass.h, Ucxendpoint.h 포함) |
IRQL | PASSIVE_LEVEL |