Condividi tramite


Funzione AcxFactoryCircuitCreate (acxcircuit.h)

La funzione AcxFactoryCircuitCreate viene usata per creare un ACXFACTORYCIRCUIT.

Sintassi

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

Parametri

Device

Oggetto WDFDEVICE (descritto in Riepilogo degli oggetti framework) che verrà associato al circuito.

Attributes

Attributi aggiuntivi definiti tramite un WDF_OBJECT_ATTRIBUTES utilizzati per impostare i valori dei vari oggetti: pulizia ed eliminazione definitiva di callback, tipo di contesto e per specificare il relativo oggetto padre WDF.

Config

Struttura ACXFACTORYCIRCUIT_INIT che definisce l'inizializzazione della factory del circuito. ACXFACTORYCIRCUIT_INIT è un oggetto opaco usato per l'inizializzazione della factory del circuito. Usare AcxFactoryCircuitInitAllocate per inizializzare la struttura ACXFACTORYCIRCUIT_INIT.

Factory

Puntatore a una posizione che riceve un handle per il nuovo oggetto ACXFACTORYCIRCUIT. Per altre informazioni sugli oggetti ACX, vedere Riepilogo degli oggetti ACX.

Valore restituito

Restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, restituisce un codice di errore appropriato. Per altre informazioni, vedere Uso dei valori NTSTATUS.

Commenti

ACXFACTORYCIRCUIT viene usato dal framework ACX per gli ACXCIRCUIT su richiesta. ACX chiederà a ACXFACTORYCIRCUIT di creare un nuovo circuito quando ne richiede uno.

ACXFACTORYCIRCUIT viene usato in un endpoint a più circuiti. Un circuito creato da ACXFACTORYCIRCUIT non può essere il circuito "core" per l'endpoint, ovvero il circuito che fornisce l'identità dell'endpoint.

AcXFACTORYCIRCUIT ha una coda WDF dedicata. Per altre informazioni sulle code WDF, vedere Framework Queue Objects.

Esempio

Di seguito è riportato un esempio di utilizzo.

    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);


Requisiti di ACX

Versione minima di ACX: 1.0

Per altre informazioni sulle versioni ACX, vedere La panoramica della versione di ACX.

Requisiti

Requisito Valore
Intestazione acxcircuit.h
IRQL PASSIVE_LEVEL

Vedi anche