EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD fonction de rappel (ucxendpoint.h)
Implémentation du pilote client qu’UCX appelle pour créer des flux statiques.
Syntaxe
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;
NTSTATUS EvtUcxEndpointStaticStreamsAdd(
[in] UCXENDPOINT UcxEndpoint,
[in] ULONG NumberOfStreams,
[in] PUCXSSTREAMS_INIT UcxStaticStreamsInit
)
{...}
Paramètres
[in] UcxEndpoint
Handle d’un objet UCXENDPOINT qui représente le point de terminaison.
[in] NumberOfStreams
Nombre de flux non par défaut à créer.
[in] UcxStaticStreamsInit
Pointeur vers une structure opaque contenant des informations d’initialisation. Cette structure est gérée par UCX.
Valeur retournée
Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS ou une autre valeur status pour laquelle NT_SUCCESS(status) est égal à TRUE. Sinon, il doit retourner une valeur status pour laquelle NT_SUCCESS(status) est false.
Remarques
Le pilote client UCX inscrit cette fonction de rappel auprès de l’extension du contrôleur hôte USB (UCX) en appelant la méthode UcxEndpointCreate .
Cette fonction de rappel crée un objet de flux statiques UCX en appelant la méthode UcxStaticStreamsCreate . Un seul objet de flux statiques UCX peut être associé à un seul point de terminaison. Le pilote appelle ensuite UcxStaticStreamsSetStreamInfo une fois par flux pour créer une file d’attente pour chaque flux.
Un objet de flux statique n’est pas activé tant qu’UCX n’appelle pas la fonction de rappel EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE du pilote client.
Exemples
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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | ucxendpoint.h (inclure Ucxclass.h, Ucxendpoint.h) |
IRQL | PASSIVE_LEVEL |