Utilizzo di oggetti Framework generale

L'oggetto framework generale è l'oggetto framework da cui derivano tutti gli altri tipi di oggetti framework.

Analogamente ad altri oggetti framework, gli oggetti generali supportano un conteggio dei riferimenti, uno spazio di contesto, funzioni di callback di eliminazione e un oggetto padre, come descritto in Introduzione agli oggetti framework.

I driver possono creare e usare oggetti framework generali. Se il driver chiama WdfObjectCreate per creare oggetti generali, il driver può:

  • Creare uno o più spazi di contesto per ogni oggetto generale.

    È possibile utilizzare lo spazio del contesto dell'oggetto per archiviare informazioni sulle risorse di sistema che si desidera associare all'oggetto generale.

    Per altre informazioni sullo spazio di contesto, vedere Framework Object Context Space.For more information about context space, see Framework Object Context Space.

  • Assegnare un elemento padre all'oggetto generale.

    L'oggetto generale verrà eliminato quando l'oggetto padre viene eliminato. Ad esempio, se il driver specifica un oggetto dispositivo framework come oggetto padre di uno dei relativi oggetti generali, il framework eliminerà l'oggetto generale quando elimina l'oggetto dispositivo.

    I driver specificano l'oggetto padre di un oggetto impostando il membro ParentObject della struttura WDF_OBJECT_ATTRIBUTES dell'oggetto.

  • Fornire funzioni di callback di eliminazione.

    Il driver può fornire funzioni EvtCleanupCallback e EvtDestroyCallback , che possono deallocare le risorse di sistema allocate dal driver al momento della creazione dell'oggetto generale. Ad esempio, se il driver denominato ExAllocatePool quando ha creato un oggetto generale, la funzione di callback cleanup o destroy può chiamare ExFreePool.

L'uso di oggetti generali può essere un modo pratico per gestire le risorse allocate dal driver. Ad esempio, un driver di livello superiore potrebbe richiedere più allocazioni di memoria per elaborare una richiesta di I/O ricevuta, se il driver invia la richiesta a più dispositivi o suddivide la richiesta in più istanze più piccole. Il driver può creare uno o più oggetti generali figlio della richiesta di I/O ricevuta e può archiviare informazioni sulle allocazioni di memoria nello spazio di contesto degli oggetti generali.