사용자 지정 속성 페이지 만들기
디바이스 속성 페이지 공급자가 디바이스 또는 디바이스 클래스에 대한 속성 페이지를 만드는 요청을 처리하는 경우 공급자는 다음 단계를 수행해야 합니다.
SetupDiGetClassInstallParams를 호출하여 디바이스에 대한 현재 클래스 설치 매개 변수를 가져옵니다. 예를 들면 다음과 같습니다.
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 )) { ...이 예제에서 코드는 디바이스의 설치 매개 변수가 반환되는 구조를 0으로 초기화하고 SetupDiGetClassInstallParams에 필요한 대로 cbSize 필드에서 클래스 설치 헤더의 크기를 설정합니다. 클래스 설치 헤더는 각 클래스 설치 매개 변수 구조의 첫 번째 멤버입니다.
다음과 같은 문을 사용하여 디바이스의 최대 동적 페이지 수가 아직 충족되지 않았는지 확인합니다.
if (AddPropertyPageData.NumDynamicPages < MAX_INSTALLWIZARD_DYNAPAGES) ...테스트가 실패하면 페이지를 초기화하거나 만들지 마세요. 대신 NO_ERROR 반환합니다.
나중에 대화 상자 절차에서 필요한 디바이스별 데이터를 저장하고 데이터를 사용하여 이 메모리를 초기화할 메모리를 할당합니다. 속성 페이지가 제거되면 공급자는 속성 페이지 콜백에서 이 메모리를 해제해야 합니다.
공동 설치 관리자인 공급자의 경우 이 디바이스별 데이터에는 DIF_ADDPROPERTYPAGE_ADVANCED DIF(디바이스 설치 함수) 코드와 함께 전달된 DeviceInfoSet 및 DeviceInfoData가 포함되어야 합니다.
예를 들어 속성 페이지 공급자는 다음 예제와 같이 구조를 정의하고 사용할 수 있습니다.
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));사용자 지정 속성 페이지에 대한 정보를 사용하여 PROPSHEETPAGE 구조를 초기화합니다.
- dwFlags에서 사용자 지정 속성 페이지에 필요한 PSP_USECALLBACK 플래그 및 기타 플래그를 설정합니다. PSP_USECALLBACK 플래그는 콜백 함수가 제공되었음을 나타냅니다.
- pfnCallback에서 속성 페이지의 콜백 함수에 대한 포인터를 설정합니다. 콜백에서 PSPCB_RELEASE 메시지를 처리하고 3단계에서 할당된 메모리를 해제합니다.
- pfnDlgProc에서 속성 페이지의 대화 상자 프로시저에 대한 포인터를 설정합니다.
- lParam에서 3단계에서 할당되고 초기화된 메모리 영역에 대한 포인터를 전달합니다.
- 사용자 지정 속성 페이지에 적절한 다른 멤버를 설정합니다. PROPSHEETPAGE 구조에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.
CreatePropertySheetPage를 호출하여 새 페이지를 만듭니다.
클래스 설치 매개 변수의 DynamicPages 멤버에 있는 동적 속성 페이지 목록에 새 페이지를 추가하고 NumDynamicPages 멤버를 증분합니다.
각 추가 사용자 지정 속성 페이지에 대해 2~6단계를 반복합니다.
SetupDiSetClassInstallParams를 호출하여 업데이트된 속성 페이지 구조를 포함하는 새 클래스 설치 매개 변수를 설정합니다.
NO_ERROR 반환합니다.
Windows 새로 만든 속성 페이지를 디바이스의 속성 시트에 추가하고 장치 관리자 Microsoft Win32 API를 호출하여 시트를 만듭니다. 속성 페이지가 표시되면 시스템에서 PROPSHEETPAGE 구조에 지정된 대화 상자 프로시저를 호출합니다.