Поделиться через


структура SP_PROPSHEETPAGE_REQUEST (setupapi.h)

Структуру SP_PROPSHEETPAGE_REQUEST можно передать в качестве первого параметра (lpv) в точку входа ExtensionPropSheetPageProc в библиотеке DLL SetupAPI . ExtensionPropSheetPageProc используется для извлечения дескриптора на страницу указанного листа свойств.

Сведения о ExtensionPropSheetPageProc и связанных функциях см. в документации по Microsoft Windows SDK.

Синтаксис

typedef struct _SP_PROPSHEETPAGE_REQUEST {
  DWORD            cbSize;
  DWORD            PageRequested;
  HDEVINFO         DeviceInfoSet;
  PSP_DEVINFO_DATA DeviceInfoData;
} SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;

Члены

cbSize

Размер структуры SP_PROPSHEETPAGE_REQUEST в байтах.

PageRequested

Страница страницы свойств, добавляемая на страницу свойств. Может иметь одно из следующих значений:

SPPSR_SELECT_DEVICE_RESOURCES

Указывает страницу Выбора ресурсов, предоставляемую библиотекой DLL SetupAPI.

SPPSR_ENUM_BASIC_DEVICE_PROPERTIES

Указывает страницу, предоставленную поставщиком BasicProperties32 устройства. То есть установщик или другой компонент, который предоставил страницы в ответ на запрос на установку DIF_ADDPROPERTYPAGE_BASIC .

SPPSR_ENUM_ADV_DEVICE_PROPERTIES

Указывает страницу, предоставленную классом и (или) поставщиком EnumPropPages32 устройства. То есть установщик или другой компонент, который предоставил страницы в ответ на запрос на установку DIF_ADDPROPERTYPAGE_ADVANCED .

DeviceInfoSet

Дескриптор для набора сведений об устройстве, содержащего устанавливаемое устройство.

DeviceInfoData

Указатель на структуру SP_DEVINFO_DATA для устанавливаемого устройства.

Комментарии

Компонент, извлекающий страницы свойств, вызывает функцию ExtensionPropSheetPageProc setupAPI и передает указатель на структуру SP_PROPSHEETPAGE_REQUEST, адрес функции AddPropSheetPageProc и некоторые частные данные. Поставщик страниц свойств вызывает подпрограмму AddPropSheetPageProc для каждого листа свойств, который он предоставляет.

В следующем фрагменте кода показано, как получить одну страницу , страницу выбора ресурсов SetupAPI:

{
    DWORD Err;
    HINSTANCE hLib;
    FARPROC PropSheetExtProc;
    HPROPSHEETPAGE hPages[2];
    .
    .
    .
        if(!(hLib = GetModuleHandle(TEXT("setupapi.dll")))) {
            return GetLastError();
        }

        if(!(PropSheetExtProc = GetProcAddress(hLib,
                 "ExtensionPropSheetPageProc"))) {
            Err = GetLastError();
            FreeLibrary(hLib);
            return Err;
        }

        PropPageRequest.cbSize = sizeof(SP_PROPSHEETPAGE_REQUEST);
        PropPageRequest.PageRequested  = 
            SPPSR_SELECT_DEVICE_RESOURCES;
        PropPageRequest.DeviceInfoSet  = DeviceInfoSet;
        PropPageRequest.DeviceInfoData = DeviceInfoData;

        if(!PropSheetExtProc(&PropPageRequest, 
                AddPropSheetPageProc, &hPages[1])) {
            Err = ERROR_INVALID_PARAMETER;
            FreeLibrary(hLib);
            return Err;
        }
        .
        .
        .
}

AddPropSheetPageProc для предыдущего фрагмента будет выглядеть примерно так:

BOOL
CALLBACK
AddPropSheetPageProc(
    IN HPROPSHEETPAGE hpage,
    IN LPARAM lParam
   )
{
    *((HPROPSHEETPAGE *)lParam) = hpage;
    return TRUE;
}

Требования

Требование Значение
Заголовок setupapi.h (включая Setupapi.h)

См. также раздел

DIF_ADDPROPERTYPAGE_ADVANCED

DIF_ADDPROPERTYPAGE_BASIC