共用方式為


WdfFdoInitAllocAndQueryProperty 函式 (wdffdo.h)

[適用於 KMDF 和 UMDF]

WdfFdoInitAllocAndQueryProperty 方法會配置緩衝區,並擷取指定的裝置屬性。

語法

NTSTATUS WdfFdoInitAllocAndQueryProperty(
  [in]           PWDFDEVICE_INIT          DeviceInit,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

參數

[in] DeviceInit

驅動程式從其 EvtDriverDeviceAdd 回呼函式取得的WDFDEVICE_INIT結構的指標。

[in] DeviceProperty

識別要擷取之裝置屬性 的DEVICE_REGISTRY_PROPERTY型別列舉值。

[in] PoolType

POOL_TYPE型別列舉值,指定要配置的記憶體類型。

[in, optional] PropertyMemoryAttributes

呼叫端配置的 WDF_OBJECT_ATTRIBUTES 結構的指標,描述 WdfFdoInitAllocAndQueryProperty 所配置記憶體物件的物件屬性。 這個參數是選擇性的,而且可以WDF_NO_OBJECT_ATTRIBUTES。

[out] PropertyMemory

接收架構記憶體物件句柄之 WDFMEMORY 型別位置的指標。

傳回值

如果作業成功,方法會傳回STATUS_SUCCESS。 其他傳回值包括:

傳回碼 Description
STATUS_INVALID_PARAMETER或STATUS_INVALID_PARAMETER_2
指定的 DeviceProperty 值無效。
STATUS_INVALID_DEVICE_REQUEST
WDFDEVICE_INIT結構不是從驅動程式的 EvtDriverDeviceAdd 回呼函式取得。
 

方法也可能傳回其他 NTSTATUS值

備註

驅動程式必須先呼叫 WdfFdoInitAllocAndQueryProperty ,才能呼叫 WdfDeviceCreate。 如需呼叫 WdfDeviceCreate 的詳細資訊,請參閱 建立架構裝置物件

呼叫 WdfDeviceCreate 之後,驅動程式可以呼叫 WdfDeviceAllocAndQueryProperty 來取得裝置屬性資訊。

如需 WdfFdoInitAllocAndQueryProperty 方法的詳細資訊,請參閱 在函式驅動程式中建立裝置物件

或者,您可以使用 WdfFdoInitAllocAndQueryPropertyEx 來存取透過 Unified 屬性模型公開的裝置屬性。

範例

下列程式代碼範例會呼叫 WdfFdoInitAllocAndQueryProperty ,以取得架構記憶體物件的句柄,其中包含裝置的安裝類別名稱。 然後,此範例會呼叫 WdfMemoryGetBuffer ,以取得緩衝區的指標,其中包含安裝程式類別名稱的 Unicode 字串。

NTSTATUS  status = STATUS_SUCCESS;
PVOID  pMemoryBuffer = NULL;
WDFMEMORY  memory = NULL;

status = WdfFdoInitAllocAndQueryProperty(
                                         DeviceInit,
                                         DevicePropertyClassName, 
                                         NonPagedPool,
                                         WDF_NO_OBJECT_ATTRIBUTES,
                                         &memory
                                         );
if(NT_SUCCESS(status)){
 pMemoryBuffer = WdfMemoryGetBuffer(
                                    memory,
                                    NULL
                                    );
}

規格需求

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

另請參閱

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty