Partager via


AcxFactoryCircuitCreate, fonction (acxcircuit.h)

La fonction AcxFactoryCircuitCreate est utilisée pour créer un ACXFACTORYCIRCUIT.

Syntaxe

NTSTATUS AcxFactoryCircuitCreate(
  WDFDEVICE               Device,
  PWDF_OBJECT_ATTRIBUTES  Attributes,
  PACXFACTORYCIRCUIT_INIT *Config,
  ACXFACTORYCIRCUIT       *Factory
);

Paramètres

Device

Objet WDFDEVICE (décrit dans Summary of Framework Objects) qui sera associé au circuit.

Attributes

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

Config

Structure ACXFACTORYCIRCUIT_INIT qui définit l’initialisation de la fabrique de circuit. ACXFACTORYCIRCUIT_INIT est un objet opaque utilisé pour l’initialisation d’usine de circuit. Utilisez AcxFactoryCircuitInitAllocate pour initialiser la structure ACXFACTORYCIRCUIT_INIT.

Factory

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet ACXFACTORYCIRCUIT. Pour plus d’informations sur les objets ACX, consultez 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

L’ACXFACTORYCIRCUIT est utilisé par l’infrastructure ACX pour les ACXCIRCUITs « à la demande ». ACX demande à ACXFACTORYCIRCUIT de créer un nouveau circuit lorsqu’un point de terminaison en nécessite un.

L’ACXFACTORYCIRCUIT est utilisé dans un point de terminaison multi-circuit. Un circuit créé par un ACXFACTORYCIRCUIT ne peut pas être le circuit « core » du point de terminaison, c’est-à-dire le circuit qui donne l’identité du point de terminaison.

Un ACXFACTORYCIRCUIT dispose d’une file d’attente WDF dédiée. Pour plus d’informations sur les files d’attente WDF, consultez Framework Queue Objects.

Exemple

L’exemple d’utilisation est illustré ci-dessous.

    NTSTATUS                                        status;
    WDF_OBJECT_ATTRIBUTES                           attributes;
    ACXFACTORYCIRCUIT                               factory;
    PACXFACTORYCIRCUIT_INIT                         factoryInit = NULL;
    SDCAXU_FACTORYCIRCUIT_CONTEXT *                 factoryCtx;
    ACX_FACTORY_CIRCUIT_OPERATION_CALLBACKS         operationCallbacks;

    //
    // Get a FactoryCircuitInit structure.
    //
    factoryInit = AcxFactoryCircuitInitAllocate(Device);

    //
    // Add factory identifiers.
    //
    AcxFactoryCircuitInitSetComponentId(factoryInit, &SDCAXU_FACTORY_GUID);
    AcxFactoryCircuitInitAssignCategories(factoryInit, &SDCAXU_FACTORY_CATEGORY, 1);
    AcxFactoryCircuitInitAssignName(factoryInit, &s_FactoryName);

    //
    // Assign the circuit's operation-callbacks.
    //
    ACX_FACTORY_CIRCUIT_OPERATION_CALLBACKS_INIT(&operationCallbacks);
    operationCallbacks.EvtAcxFactoryCircuitCreateCircuitDevice = SdcaXu_EvtAcxFactoryCircuitCreateCircuitDevice;
    operationCallbacks.EvtAcxFactoryCircuitCreateCircuit = SdcaXu_EvtAcxFactoryCircuitCreateCircuit;
    AcxFactoryCircuitInitSetOperationCallbacks(factoryInit, &operationCallbacks);

    //
    // Create the factory circuit.
    //
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, SDCAXU_FACTORYCIRCUIT_CONTEXT);
    attributes.ParentObject = Device;
    status = AcxFactoryCircuitCreate(Device, &attributes, &factoryInit, &factory);


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 acxcircuit.h
IRQL PASSIVE_LEVEL

Voir aussi