IWDFPropertyStoreFactory::RetrieveDevicePropertyStore 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.
RetrieveDevicePropertyStore 메서드는 드라이버가 레지스트리에 액세스하는 데 사용할 수 있는 속성 저장소 인터페이스를 검색합니다.
통사론
HRESULT RetrieveDevicePropertyStore(
[in] PWDF_PROPERTY_STORE_ROOT RootSpecifier,
[in] WDF_PROPERTY_STORE_RETRIEVE_FLAGS Flags,
[in] REGSAM DesiredAccess,
[in] PCWSTR SubkeyPath,
[out] IWDFNamedPropertyStore2 **PropertyStore,
[out] WDF_PROPERTY_STORE_DISPOSITION *Disposition
);
매개 변수
[in] RootSpecifier
드라이버 할당 WDF_PROPERTY_STORE_ROOT 구조체의 주소입니다. 드라이버는 이 구조체를 채워 RetrieveDevicePropertyStore가 검색할 속성 저장소를 식별할.
[in] Flags
UMDF가 없는 경우 지정된 레지스트리 항목을 만들어야 하는지 여부와 Windows를 다시 시작할 때 새 항목을 삭제해야 하는지 여부를 지정하는 WDF_PROPERTY_STORE_RETRIEVE_FLAGS형식화된 플래그입니다.
[in] DesiredAccess
드라이버에서 사용할 레지스트리에 대한 액세스 유형을 지정하는 REGSAM 형식 비트 마스크입니다. REGSAM 형식은 Winreg.h에 정의되며 windows SDK의 REGSAM설명되어 있습니다. 비트 마스크는 GENERIC_WRITE, KEY_CREATE_SUB_KEY 또는 WRITE_DAC 액세스를 지정해서는 안됩니다. 드라이버에서 KEY_CREATE_SUB_KEY 지정할 수는 없지만 RetrieveDevicePropertyStore 호출하면 하위 키가 만들어질 수 있습니다.
[in] SubkeyPath
RootSpecifier 매개 변수가 지정하는 레지스트리 키 아래에 있는 하위 키의 이름을 나타내는 호출자 제공 문자열에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL 수 있습니다. 주의에서 자세한 내용을 참조하세요.
[out] PropertyStore
IWDFNamedPropertyStore2 인터페이스에 대한 포인터를 받는 위치의 주소입니다. 드라이버는 이 인터페이스를 사용하여 레지스트리의 값에 액세스합니다.
[out] Disposition
WDF_PROPERTY_STORE_DISPOSITION형식화된 값을 받는 위치의 주소입니다.
반환 값
RetrieveDevicePropertyStore 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 묘사 |
---|---|
|
호출자가 잘못된 입력 인수를 제공했습니다. |
|
메모리 할당 시도가 실패했습니다. |
이 메서드는 Winerror.h에 포함된 다른 값 중 하나를 반환할 수 있습니다.
발언
드라이버는 RetrieveDevicePropertyStore 호출하여 드라이버의 소프트웨어 키, 현재 디바이스의 하드웨어 키, 현재 디바이스가 지원하는 디바이스 인터페이스의 키 또는 DEVICEMAP 키에 액세스할 수 있습니다.
SubkeyPath 매개 변수를 제공하는 경우 드라이버의 서비스 이름과 같은 고유한 이름을 사용해야 합니다. 드라이버는 하위 키를 사용하여 디바이스 관련 정보를 저장할 수 있습니다.
RetrieveDevicePropertyStore 사용하여 레지스트리에 액세스하는 방법에 대한 자세한 내용은 UMDF 기반 드라이버레지스트리를 사용하는 방법을 참조하세요.
예제
다음 코드 예제에서는 디바이스의 하드웨어 키 아래에 PortName 항목에 할당된 값을 검색합니다.
IWDFPropertyStoreFactory *pPropertyStoreFactory = NULL;
WDF_PROPERTY_STORE_ROOT RootSpecifier;
IWDFNamedPropertyStore2 * pHardwarePropertyStore2 = NULL;
PROPVARIANT comPortPV;
WCHAR portName[] = L"PortName";
HRESULT hr;
...
//
// Get the property store factory interface.
//
hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pPropertyStoreFactory));
if (FAILED(hr))
{
goto Exit;
}
//
//Initialize the WDF_PROPERTY_STORE_ROOT structure. We want to open the
// \Device Parameters subkey under the device's hardware key.
//
RtlZeroMemory(&RootSpecifier,
sizeof(WDF_PROPERTY_STORE_ROOT));
RootSpecifier.LengthCb = sizeof(WDF_PROPERTY_STORE_ROOT);
RootSpecifier.RootClass = WdfPropertyStoreRootClassHardwareKey;
RootSpecifier.Qualifier.HardwareKey.ServiceName = WDF_PROPERTY_STORE_HARDWARE_KEY_ROOT;
//
// Get the property store interface for the hardware key of the
// device that m_FxDevice represents.
//
hr = pPropertyStoreFactory->RetrieveDevicePropertyStore(
&RootSpecifier,
WdfPropertyStoreNormal,
KEY_QUERY_VALUE,
NULL,
&pHardwarePropertyStore2,
NULL
);
if (FAILED(hr))
{
goto Exit;
}
//
// Get the value of the "PortName" entry, which is stored under
// the device's \Device Parameters subkey.
//
PropVariantInit(&comPortPV);
hr = pHardwarePropertyStore2->GetNamedValue(portName,
&comPortPV);
if (FAILED(hr))
{
goto Exit;
}
...
Exit:
SAFE_RELEASE(pHardwarePropertyStore2);
SAFE_RELEASE(pPropertyStoreFactory);
...
요구 사항
요구 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 바탕 화면 |
최소 UMDF 버전 | 1.9 |
헤더 | wudfddi.h(Wudfddi.h 포함) |
DLL | WUDFx.dll |
참고 항목
IWDFDevice::RetrieveDevicePropertyStore