Funzione AcxFactoryCircuitCreate (acxcircuit.h)
La funzione AcxFactoryCircuitCreate viene usata per creare un OGGETTO ACXFACTORYCIRCUIT.
NTSTATUS AcxFactoryCircuitCreate(
WDFDEVICE Device,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXFACTORYCIRCUIT_INIT *Config,
ACXFACTORYCIRCUIT *Factory
);
Device
Oggetto WDFDEVICE (descritto in Riepilogo degli oggetti framework) che verrà associato al circuito.
Attributes
Attributi aggiuntivi definiti usando un WDF_OBJECT_ATTRIBUTES utilizzati per impostare i valori dei vari oggetti: pulizia ed eliminazione 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 utilizzato per l'inizializzazione della factory del circuito. Utilizzare 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.
Restituisce STATUS_SUCCESS
se la chiamata ha avuto esito positivo. In caso contrario, restituisce un codice di errore appropriato. Per altre informazioni, vedere Uso di valori NTSTATUS.
ACXFACTORYCIRCUIT viene usato dal framework ACX per le ACX ACXCIRCUIT su richiesta. ACX chiederà a ACXFACTORYCIRCUIT di creare un nuovo circuito quando ne richiede uno.
ACXFACTORYCIRCUIT viene usato in un endpoint multi circuito. 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.
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);
versione minima di ACX: 1.0
Per altre informazioni sulle versioni di ACX, vedere panoramica della versione ACX.
Requisito | Valore |
---|---|
intestazione | acxcircuit.h |
IRQL | PASSIVE_LEVEL |