Partager via


AcxStreamCreate, fonction (acxstreams.h)

AcxStreamCreate crée un flux ACX qui peut être utilisé pour contrôler le comportement de diffusion en continu.

Syntaxe

NTSTATUS AcxStreamCreate(
  WDFDEVICE              Device,
  ACXCIRCUIT             Circuit,
  PWDF_OBJECT_ATTRIBUTES Attributes,
  PACXSTREAM_INIT        *Config,
  ACXSTREAM              *Stream
);

Paramètres

Device

Objet WDFDEVICE (décrit dans Summary of Framework Objects) associé à l’ACXCIRCUIT spécifié et à son flux.

Circuit

ACXCIRCUIT auquel ce flux sera associé.

Attributes

Attributs supplémentaires définis à l’aide d’un WDF_OBJECT_ATTRIBUTES utilisé pour définir les valeurs de l’objet : nettoyage et destruction de rappels, type de contexte et spécification de son objet parent.

Config

Structure ACXSTREAM_INIT qui définit les paramètres d’initialisation du flux. Pour plus d’informations sur les objets ACX, consultez ACX - Résumé des objets ACX.

Stream

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet ACXSTREAM.

Un objet ACXSTREAM représente un flux audio créé par un circuit. Pour plus d’informations, consultez ACX - Résumé des objets ACX.

Valeur de retour

Retourne STATUS_SUCCESS si l’appel a réussi. Sinon, elle retourne un code d’erreur approprié. Pour plus d’informations, consultez Using NTSTATUS Values.

Remarques

Une fois acXSTREAM créé, le pilote peut ajouter un ou plusieurs éléments ACX au flux. Par défaut, les éléments ACX sont connectés dans le même ordre d’assembly. Un ACXSTREAM n’est associé qu’à un seul ACXCIRCUIT. ACX prend en charge deux types de flux : les objets de flux ACX de base utilisés par les circuits sans diffusion en continu et les objets de flux ACX RealTime (RT) utilisés par les circuits de diffusion en continu.

AcXSTREAM créé par AcxStreamCreate permet au pilote de recevoir des signaux de contrôle et des modifications d’état associés à un flux. Toutefois, ACXSTREAM ne prend pas en charge la diffusion en continu de données audio vers ou depuis le système d’exploitation. Un pilote qui prend en charge la diffusion en continu de données audio doit utiliser AcxRtStreamCreate pour créer un ACXSTREAM avec prise en charge de la diffusion en continu. Pour un point de terminaison créé à partir de plusieurs ACXCIRCUITs sur plusieurs pilotes, acXCIRCUIT qui héberge la broche de diffusion en continu crée un flux ACX RT tandis que les autres ACXCIRCUIT dans le point de terminaison créent des flux ACX ACX non RT.

Exemple

L’exemple de création de flux est illustré ci-dessous.

    //
    // Init streaming callbacks.
    //
    ACX_STREAM_CALLBACKS streamCallbacks;
    ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
    streamCallbacks.EvtAcxStreamPrepareHardware     = EvtStreamPrepareHardware;
    streamCallbacks.EvtAcxStreamReleaseHardware     = EvtStreamReleaseHardware;
    streamCallbacks.EvtAcxStreamRun                 = EvtStreamRun;
    streamCallbacks.EvtAcxStreamPause               = EvtStreamPause;
    streamCallbacks.EvtAcxStreamAssignDrmContentId  = EvtStreamAssignDrmContentId;

    status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);

    //
    // Create the stream.
    //
    WDF_OBJECT_ATTRIBUTES attributes;
    ACXSTREAM stream;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, STREAM_CONTEXT);
    attributes.EvtCleanupCallback = EvtStreamContextCleanup;
    attributes.EvtDestroyCallback = EvtStreamDestroy;
    status = AcxStreamCreate(Device, Circuit, &attributes, &StreamInit, &stream);

Configuration requise pour ACX

version minimale d’ACX : 1.0

Pour plus d’informations sur les versions ACX, consultez vue d’ensemble de la version ACX.

Exigences

Exigence Valeur
d’en-tête acxstreams.h
IRQL PASSIVE_LEVEL

Voir aussi