(setupapi.h) SP_PROPSHEETPAGE_REQUEST 结构

SP_PROPSHEETPAGE_REQUEST结构可以作为第一个参数 (lpv) 传递到 SetupAPI DLL 中的 ExtensionPropSheetPageProc 入口点。 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

指定 SetupAPI DLL 提供的“资源选择”页。

SPPSR_ENUM_BASIC_DEVICE_PROPERTIES

指定由设备的 BasicProperties32 提供程序提供的页面。 也就是说,提供页面 () 以响应DIF_ADDPROPERTYPAGE_BASIC安装请求 安装程序或其他组件。

SPPSR_ENUM_ADV_DEVICE_PROPERTIES

指定由类和/或设备的 EnumPropPages32 提供程序提供的页面。 也就是说,提供页面 () 以响应DIF_ADDPROPERTYPAGE_ADVANCED安装请求 安装程序或其他组件。

DeviceInfoSet

包含所安装设备的设备信息集的句柄。

DeviceInfoData

指向所安装设备的 SP_DEVINFO_DATA 结构的指针。

注解

检索属性页的组件调用 SetupAPI 的 ExtensionPropSheetPageProc 函数,并传入指向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;
}

要求

要求
Header setupapi.h (包括 Setupapi.h)

另请参阅

DIF_ADDPROPERTYPAGE_ADVANCED

DIF_ADDPROPERTYPAGE_BASIC