共用方式為


WdfRegistryQueryMemory 函式 (wdfregistry.h)

[適用於 KMDF 和 UMDF]

WdfRegistryQueryMemory 方法會擷取目前指派給指定登錄值的數據、將數據儲存在架構配置的緩衝區中,並建立架構記憶體物件來表示緩衝區。

語法

NTSTATUS WdfRegistryQueryMemory(
  [in]            WDFKEY                 Key,
  [in]            PCUNICODE_STRING       ValueName,
  [in]            POOL_TYPE              PoolType,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [out]           WDFMEMORY              *Memory,
  [out, optional] PULONG                 ValueType
);

參數

[in] Key

表示已開啟登錄機碼之登錄機碼物件的句柄。

[in] ValueName

包含值名稱 之UNICODE_STRING 結構的指標。

[in] PoolType

POOL_TYPE型別值,指定要配置給數據緩衝區的記憶體類型。

[in, optional] MemoryAttributes

包含新記憶體物件之物件屬性 之WDF_OBJECT_ATTRIBUTES 結構的指標。 此參數是選擇性的,而且可以WDF_NO_OBJECT_ATTRIBUTES。

[out] Memory

接收新記憶體物件句柄之位置的指標。

[out, optional] ValueType

接收數據類型之位置的指標。 如需數據類型值的清單,請參閱 KEY_VALUE_BASIC_INFORMATIONType 成員。 此指標是選擇性的,可以是 NULL

傳回值

如果作業成功,WdfRegistryQueryMemory 會傳回STATUS_SUCCESS。 否則,方法可能會傳回下列其中一個值:

傳回碼 Description
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryMemory 未在 IRQL = PASSIVE_LEVEL呼叫。

STATUS_INVALID_PARAMETER
指定了無效的參數。
STATUS_INSUFFICIENT_RESOURCES
無法配置記憶體物件。
STATUS_ACCESS_DENIED
驅動程式未使用KEY_QUERY_VALUE、KEY_READ或KEY_ALL_ACCESS存取來開啟登錄機碼。
STATUS_OBJECT_NAME_NOT_FOUND
登錄值無法使用。
STATUS_RESOURCE_DATA_NOT_FOUND
登錄值存在於指定的機碼底下,但是空的。
 

如需 WdfRegistryQueryMemory 方法可能會傳回的其他傳回值清單,請參閱 Framework 物件建立錯誤

這個方法也可能傳回其他 NTSTATUS值

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

備註

當驅動程式呼叫 WdfRegistryQueryMemory 時,架構會配置足以保存指定登錄值數據的緩衝區。 在 WdfRegistryQueryMemory 傳回之後,驅動程式可以呼叫 WdfMemoryGetBuffer,以取得緩衝區的指標和緩衝區的大小。

如需登錄機碼對象的詳細資訊,請參閱 在 Framework-Based Drivers 中使用登錄

範例

下列程式代碼範例會擷取指派給 MyValueName 值的數據,然後取得數據的位址和大小。

WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");

status = WdfRegistryQueryMemory(
                                Key,
                                &valueName1,
                                PagedPool,
                                NULL,
                                &memory,
                                &type
                                );
pBuf = (PUCHAR)WdfMemoryGetBuffer(
                                   memory,
                                   &size
                                   );

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfregistry.h (包含 Wdf.h)
程式庫 Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI 合規性規則 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另請參閱

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue