共用方式為


WdfFdoInitQueryPropertyEx 函式 (wdffdo.h)

[適用於 KMDF 和 UMDF]

WdfFdoInitQueryPropertyEx 方法會擷取指定的裝置屬性。

語法

NTSTATUS WdfFdoInitQueryPropertyEx(
  [in]  PWDFDEVICE_INIT           DeviceInit,
  [in]  PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
  [in]  ULONG                     BufferLength,
  [out] PVOID                     PropertyBuffer,
  [out] PULONG                    ResultLength,
  [out] PDEVPROPTYPE              Type
);

參數

[in] DeviceInit

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

[in] DeviceProperty

識別要擷取之裝置屬性之 WDF_DEVICE_PROPERTY_DATA 結構的指標。

[in] BufferLength

由 PropertyBuffer 所指向之緩衝區的大小,以位元組為單位。

[out] PropertyBuffer

呼叫端提供的指標,指向接收所要求資訊的呼叫端配置緩衝區。 如果 bufferLength 參數為零,則指標可以 NULL

[out] ResultLength

呼叫端提供的位置,傳回時會包含方法儲存在 PropertyBuffer 中之資訊的大小,以位元組為單位。 如果函式的傳回值是 STATUS_BUFFER_TOO_SMALL,這個位置會收到所需的緩衝區大小。

[out] Type

DEVPROPTYPE 變數的指標,傳回時會包含儲存在 PropertyBuffer 屬性資料的屬性類型值

返回值

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

回傳碼 說明
STATUS_BUFFER_TOO_SMALL
提供的緩衝區太小,無法接收資訊。
STATUS_INVALID_PARAMETER
指定的 DeviceProperty 值無效。
 

方法可能會 傳回其他NTSTATUS 值。

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

備註

在接收裝置屬性數據之前,驅動程式通常會呼叫 WdfFdoInitQueryPropertyEx 方法,以取得所需的緩衝區大小。 針對某些屬性,當傳回所需的大小,以及驅動程式再次呼叫 WdfFdoInitQueryProperty Ex 時,數據大小可能會變更。 因此,驅動程式應該在迴圈內呼叫 WdfFdoInitQueryPropertyEx,直到傳回狀態未STATUS_BUFFER_TOO_SMALL為止。

最好只有在已知且未變更所需的緩衝區大小時,才能使用 WdfFdoInitQueryPropertyEx,因為在此情況下,驅動程式必須只呼叫 WdfFdoInitQueryPropertyEx 一次。 如果必要的緩衝區大小未知或不同,驅動程式應該呼叫 WdfFdoInitAllocAndQueryPropertyEx

驅動程式只能在呼叫 WdfDeviceCreate之前呼叫 WdfFdoInitQueryPropertyEx。 如需呼叫 WdfDeviceCreate的詳細資訊,請參閱 建立 Framework Device Object

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

如需相關方法的相關信息,請參閱 存取統一裝置屬性模型

需求

要求 價值
目標平臺 普遍
最低 KMDF 版本 1.13
最低 UMDF 版本 2.0
標題 wdffdo.h (包括 Wdf.h)
程式庫 Wdf01000.sys (KMDF):WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL

另請參閱

WdfFdoInitQueryProperty