EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD funzione di callback (ucxendpoint.h)
Implementazione del driver client che UCX chiama per creare flussi statici.
Sintassi
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;
NTSTATUS EvtUcxEndpointStaticStreamsAdd(
[in] UCXENDPOINT UcxEndpoint,
[in] ULONG NumberOfStreams,
[in] PUCXSSTREAMS_INIT UcxStaticStreamsInit
)
{...}
Parametri
[in] UcxEndpoint
Handle per un oggetto UCXENDPOINT che rappresenta l'endpoint.
[in] NumberOfStreams
Numero di flussi non predefiniti da creare.
[in] UcxStaticStreamsInit
Puntatore a una struttura opaca contenente informazioni di inizializzazione. Questa struttura è gestita da UCX.
Valore restituito
Se l'operazione ha esito positivo, la funzione di callback deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(status) è TRUE. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS(status) è uguale a FALSE.
Osservazioni
Il driver client UCX registra questa funzione di callback con l'estensione del controller host USB (UCX) chiamando il metodo UcxEndpointCreate.
Questa funzione di callback crea un oggetto flussi statici UCX chiamando il metodo UcxStaticStreamsCreate. A un singolo endpoint può essere associato un solo oggetto flussi statici UCX. Il driver chiama quindi UcxStaticStreamsSetStreamInfo una volta per ogni flusso per creare una coda per ogni flusso.
Un oggetto flussi statici non è abilitato fino a quando UCX non chiama la funzione di callback EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE del driver client.
Esempi
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);
}
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Finestre |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | ucxendpoint.h (include Ucxclass.h, Ucxendpoint.h) |
IRQL | PASSIVE_LEVEL |