Partager via


Création de pages de propriétés personnalisées

Lorsqu’un fournisseur de pages de propriétés d’appareil gère une demande de création d’une page de propriétés pour son appareil ou sa classe d’appareil, le fournisseur doit effectuer les étapes suivantes :

  1. Appelez SetupDiGetClassInstallParams pour obtenir les paramètres d’installation de classe actuels pour l’appareil. Par exemple :

    SP_ADDPROPERTYPAGE_DATA AddPropertyPageData;
    :
    ZeroMemory(&AddPropertyPageData, sizeof(SP_ADDPROPERTYPAGE_DATA));
    AddPropertyPageData.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
    
    if (SetupDiGetClassInstallParams(DeviceInfoSet, DeviceInfoData,
         (PSP_CLASSINSTALL_HEADER)&AddPropertyPageData,
         sizeof(SP_ADDPROPERTYPAGE_DATA), NULL )) {
    ...
    

    Dans cet exemple, le code initialise zéro la structure dans laquelle les paramètres d’installation de l’appareil seront retournés et définit la taille de l’en-tête d’installation de classe dans le champ cbSize , comme requis par SetupDiGetClassInstallParams. L’en-tête d’installation de classe est le premier membre de chaque structure de paramètres d’installation de classe.

  2. Assurez-vous que le nombre maximal de pages dynamiques pour l’appareil n’a pas encore été atteint à l’aide d’une instruction telle que la suivante :

    if (AddPropertyPageData.NumDynamicPages < 
        MAX_INSTALLWIZARD_DYNAPAGES)
     ...
    

    Si le test échoue, n’initialisez pas ou ne créez pas la page. Au lieu de cela, retournez NO_ERROR.

  3. Allouez de la mémoire dans laquelle enregistrer toutes les données spécifiques de l’appareil qui seront nécessaires ultérieurement dans la procédure de boîte de dialogue et initialisez cette mémoire avec les données. Le fournisseur doit libérer cette mémoire dans son rappel de page de propriétés lorsque la page de propriétés est détruite.

    Pour les fournisseurs qui sont co-programme d’installation, ces données spécifiques à l’appareil doivent inclure les données DeviceInfoSet et DeviceInfoData passées avec le code de fonction d’installation d’appareil ( DIF) DIF_ADDPROPERTYPAGE_ADVANCED.

    Par exemple, un fournisseur de pages de propriétés peut définir et utiliser une structure comme indiqué dans l’exemple suivant :

    typedef struct _TEST_PROP_PAGE_DATA {
        HDEVINFO DeviceInfoSet;
        PSP_DEVINFO_DATA DeviceInfoData;
    } TEST_PROP_PAGE_DATA, *PTEST_PROP_PAGE_DATA;
    ...
    PTEST_PROP_PAGE_DATA     pMyPropPageData;
    ...
    pMyPropPageData = HeapAlloc(GetProcessHeap(), 0, sizeof(TESTPROP_PAGE_DATA));
    
  4. Initialisez une structure PROPSHEETPAGE avec des informations sur la page de propriétés personnalisées :

    • Dans dwFlags, définissez l’indicateur PSP_USECALLBACK et tous les autres indicateurs requis pour la page de propriétés personnalisées. L’indicateur PSP_USECALLBACK indique qu’une fonction de rappel a été fournie.
    • Dans pfnCallback, définissez un pointeur vers la fonction de rappel pour la page de propriétés. Dans le rappel, traitez le message PSPCB_RELEASE et libérez la mémoire allouée à l’étape 3.
    • Dans pfnDlgProc, définissez un pointeur vers la procédure de boîte de dialogue pour la page de propriétés.
    • Dans lParam, passez un pointeur vers la zone mémoire qui a été allouée et initialisée à l’étape 3.
    • Définissez d’autres membres en fonction de la page de propriétés personnalisées. Consultez la documentation Microsoft Windows SDK pour plus d’informations sur la structure PROPSHEETPAGE.
  5. Appelez CreatePropertySheetPage pour créer la page.

  6. Ajoutez la nouvelle page à la liste des pages de propriétés dynamiques dans le membre DynamicPages des paramètres d’installation de la classe et incrémentez le membre NumDynamicPages .

  7. Répétez les étapes 2 à 6 pour chaque page de propriétés personnalisées supplémentaire.

  8. Appelez SetupDiSetClassInstallParams pour définir les nouveaux paramètres d’installation de classe, qui incluent la structure de page de propriétés mise à jour.

  9. Retourne NO_ERROR.

Windows ajoute les pages de propriétés nouvellement créées à la feuille de propriétés de l’appareil et Gestionnaire de périphériques effectue des appels d’API Microsoft Win32 pour créer la feuille. Lorsque la page de propriétés s’affiche, le système appelle la procédure de boîte de dialogue spécifiée dans la structure PROPSHEETPAGE.