다음을 통해 공유


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에 정의되며 REGSAM의 Windows SDK 설명되어 있습니다. 비트 마스크는 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 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
E_INVALIDARG
호출자가 잘못된 입력 인수를 제공했습니다.
E_OUTOFMEMORY
메모리를 할당하지 못했습니다.
 

이 메서드는 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

IWDFDeviceInitialize::RetrieveDevicePropertyStore

IWDFPropertyStoreFactory