Partager via


PDD_GETDRIVERINFO fonction de rappel (ddrawint.h)

La fonction DdGetDriverInfo interroge le pilote pour obtenir des fonctionnalités DirectDraw et Direct3D supplémentaires que le pilote prend en charge.

Syntaxe

PDD_GETDRIVERINFO PddGetdriverinfo;

DWORD PddGetdriverinfo(
  PDD_GETDRIVERINFODATA unnamedParam1
)
{...}

Paramètres

unnamedParam1

Pointe vers une structure DD_GETDRIVERINFODATA qui contient les informations requises pour exécuter la requête.

Valeur retournée

DdGetDriverInfo doit retourner DDHAL_DRIVER_HANDLED.

Remarques

Les pilotes doivent implémenter DdGetDriverInfo pour exposer les fonctionnalités DirectDraw prises en charge par les pilotes qui ne peuvent pas être retournées via DrvEnableDirectDraw.

La fonction DrvGetDirectDrawInfo du pilote retourne un pointeur vers DdGetDriverInfo dans le membre GetDriverInfo de la structure DD_HALINFO .

Pour informer DirectDraw que le membre GetDriverInfo a été défini correctement, le pilote doit également définir le bit DDHALINFO_GETDRIVERINFOSET du membre dwFlags dans la structure DD_HALINFO.

DdGetDriverInfo doit déterminer si le pilote et son matériel prennent en charge les rappels ou les fonctionnalités demandés par le GUID spécifié. Pour tous les GUID à l’exception de GUID_D3DParseUnknownCommandCallback, si le pilote fournit la prise en charge demandée, il doit définir les membres suivants de la structure DD_GETDRIVERINFODATA :

  • Définissez dwActualSize sur la taille en octets de la structure de rappel ou de fonctionnalité retournée par le pilote.
  • Dans la mémoire vers laquelle lpvData pointe, initialisez les membres de la structure de rappel ou de capacité qui correspond à la fonctionnalité demandée comme suit :
    • Définissez le membre dwSize sur la taille en octets de la structure.
    • Pour les rappels, définissez les pointeurs de fonction pour qu’ils pointent vers les rappels implémentés par le pilote et définissez les bits dans le membre dwFlags pour indiquer les fonctions prises en charge par le pilote.
    • Pour les fonctionnalités, définissez les membres appropriés de la structure des fonctionnalités avec les valeurs prises en charge par le pilote/périphérique.
  • Retournez DD_OK dans ddRVal.
Si le pilote ne prend pas en charge la fonctionnalité, il doit définir ddRVal sur DDERR_CURRENTLYNOTAVAIL et retourner.

DirectDraw informe le pilote de la quantité de données attendue dans le membre dwExpectedSize de la structure DD_GETDRIVERINFODATA . Le pilote ne doit pas remplir plus de données que dwExpectedSize octets.

Pour éviter les problèmes à l’aide de DdGetDriverInfo :

  • N’implémentez pas de dépendances en fonction de l’ordre dans lequel DdGetDriverInfo est appelé. Par exemple, évitez de crocheter les étapes d’initialisation du pilote dans DdGetDriverInfo.
  • N’essayez pas de déterminer la version de DirectDraw en fonction des appels à DdGetDriverInfo.
  • Ne supposez pas le nombre de fois où DirectDraw appelle le pilote ou le nombre de fois où DirectDraw interroge un GUID donné. Il est possible que DirectDraw sonde le pilote à plusieurs reprises avec le même GUID. L’implémentation d’hypothèses à ce sujet dans le pilote entrave sa compatibilité avec les futurs runtimes.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête ddrawint.h (inclure Winddi.h)

Voir aussi

DD_GETDRIVERINFODATA

DrvEnableDirectDraw

DrvGetDirectDrawInfo