Utilisation d’objets framework généraux

L’objet framework général est l’objet framework à partir duquel tous les autres types d’objets framework sont dérivés.

Comme d’autres objets framework, les objets généraux prennent en charge un nombre de références, un espace de contexte, des fonctions de rappel de suppression et un objet parent, comme décrit dans Présentation des objets framework.

Les pilotes peuvent créer et utiliser des objets d’infrastructure généraux. Si votre pilote appelle WdfObjectCreate pour créer des objets généraux, le pilote peut :

  • Créez un ou plusieurs espaces de contexte pour chaque objet général.

    Vous pouvez utiliser l’espace de contexte de l’objet pour stocker des informations sur les ressources système que vous souhaitez associer à l’objet général.

    Pour plus d’informations sur l’espace contextuel, consultez Espace de contexte d’objet framework.

  • Affectez un parent à l’objet général.

    L’objet général est supprimé lorsque l’objet parent est supprimé. Par exemple, si votre pilote spécifie un objet d’appareil framework comme objet parent de l’un de ses objets généraux, l’infrastructure supprime l’objet général lorsqu’il supprime l’objet d’appareil.

    Les pilotes spécifient l’objet parent d’un objet en définissant le membre ParentObject de la structure WDF_OBJECT_ATTRIBUTES de l’objet .

  • Fournir des fonctions de rappel de suppression.

    Le pilote peut fournir des fonctions EvtCleanupCallback et EvtDestroyCallback , qui peuvent libérer les ressources système allouées par le pilote lors de la création de l’objet général. Par exemple, si le pilote a appelé ExAllocatePool lorsqu’il a créé un objet général, la fonction de rappel de nettoyage ou de destruction peut appeler ExFreePool.

L’utilisation d’objets généraux peut être un moyen pratique de gérer les ressources allouées par le pilote. Par exemple, un pilote de niveau supérieur peut nécessiter plusieurs allocations de mémoire pour traiter une demande d’E/S reçue, si le pilote envoie la demande à plusieurs appareils ou interrompt la demande en plusieurs plus petits. Le pilote peut créer un ou plusieurs objets généraux qui sont des enfants de la demande d’E/S reçue et il peut stocker des informations sur les allocations de mémoire dans l’espace de contexte des objets généraux.