Condividi tramite


Funzione WdfObjectAllocateContext (wdfobject.h)

[Si applica a KMDF e UMDF]

Il metodo WdfObjectAllocateContext alloca lo spazio del contesto per un oggetto framework specificato.

Sintassi

NTSTATUS WdfObjectAllocateContext(
  [in]  WDFOBJECT              Handle,
  [in]  PWDF_OBJECT_ATTRIBUTES ContextAttributes,
  [out] PVOID                  *Context
);

Parametri

[in] Handle

Handle per un oggetto framework.

[in] ContextAttributes

Puntatore a una struttura di WDF_OBJECT_ATTRIBUTES fornita dal chiamante che descrive lo spazio del contesto.

[out] Context

Puntatore a una posizione che riceve un puntatore allo spazio di contesto allocato.

Valore restituito

WdfObjectAllocateContext restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
È stato rilevato un parametro non valido.
STATUS_OBJECT_NAME_INVALID
Il membro ContextTypeInfo della struttura di WDF_OBJECT_ATTRIBUTES specificata dal parametro ContextAttributes non è valido.
STATUS_INSUFFICIENT_RESOURCES
Impossibile allocare lo spazio del contesto.
STATUS_OBJECT_NAME_EXISTS
Il driver ha già allocato lo spazio di contesto corrispondente al membro ContextTypeInfo della struttura WDF_OBJECT_ATTRIBUTES che ContextAttributes specifica. In questo caso, il puntatore nel Contesto parametro riceve un puntatore allo spazio di contesto esistente e non alloca spazio di contesto duplicato.
STATUS_DELETE_PENDING
L'oggetto specificato dal parametro handle viene eliminato. In questa situazione, il framework non alloca lo spazio del contesto.
 

Questo metodo può anche restituire altri valori NTSTATUS .

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Osservazioni:

In genere, i driver creano spazio di contesto oggetto specificando una struttura WDF_OBJECT_ATTRIBUTES quando chiamano il metodo di creazione di un oggetto framework, ad esempio WdfDeviceCreate.

Se si desidera che il driver allochi più di un tipo di spazio di contesto ad alcuni dei relativi oggetti, il driver può chiamare WdfObjectAllocateContext una o più volte dopo aver chiamato il metodo di creazione di un oggetto. Ogni chiamata a WdfObjectAllocateContext deve specificare un tipo di contesto diverso. (Il ContextTypeInfo membro della struttura WDF_OBJECT_ATTRIBUTES identifica il tipo di contesto.

Se il driver chiama WdfObjectAllocateContext più volte per un determinato oggetto, è possibile fornire EvtCleanupCallback e EvtDestroyCallback funzioni di callback per ogni contesto.

Quando si chiama WdfObjectAllocateContext, non specificare un ParentObject nella struttura WDF_OBJECT_ATTRIBUTES.

Quando il framework alloca lo spazio del contesto per un oggetto, inizializza anche lo spazio del contesto.

Per altre informazioni sullo spazio del contesto dell'oggetto, vedere Framework Object Context Space.

Per altre informazioni sulle regole di pulizia per una gerarchia di oggetti framework, vedere Framework Object Life Cycle.

Esempi

Nell'esempio di codice seguente viene creato lo spazio di contesto per un oggetto richiesta. Lo spazio di contesto si basa sulla struttura di REQUEST_CONTEXT dell'esempio.

typedef struct _REQUEST_CONTEXT {
  WDFMEMORY InputMemoryBuffer;
  WDFMEMORY OutputMemoryBuffer;
} REQUEST_CONTEXT, *PREQUEST_CONTEXT;

PREQUEST_CONTEXT  reqContext = NULL;
WDF_OBJECT_ATTRIBUTES  attributes;

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
                                        &attributes,
                                        REQUEST_CONTEXT
                                        );
status = WdfObjectAllocateContext(
                                  Request,
                                  &attributes,
                                  &reqContext
                                  );

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
versione minima di KMDF 1.0
versione minima di UMDF 2.0
intestazione wdfobject.h (include Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
regole di conformità DDI DriverCreate(kmdf)

Vedere anche

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreare