структура 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) |