共用方式為


SpbControllerSetRequestAttributes 函式 (spbcx.h)

SpbControllerSetRequestAttributes 方法會設定物件屬性,這些屬性將用於 SPB 架構延伸模組 (SpbCx) 傳遞給 SPB 控制器驅動程式的所有 SPBREQUEST 物件。

語法

void SpbControllerSetRequestAttributes(
  [in] WDFDEVICE              FxDevice,
  [in] PWDF_OBJECT_ATTRIBUTES RequestAttributes
);

參數

[in] FxDevice

代表SPB控制器之裝置物件的WDFDEVICE句柄。

[in] RequestAttributes

呼叫端配置的 WDF_OBJECT_ATTRIBUTES 結構的指標,其中包含SPB控制器SPBREQUEST對象的屬性。

傳回值

沒有

言論

在裝置初始化期間,SPB 控制器驅動程式可以呼叫此方法來設定SPBREQUEST對象的預設屬性。 之後,SpbCx 會將這些屬性指派給它傳遞給總線上裝置的任何 I/O 要求(或轉寄)。

RequestAttributes 指向 WDF_OBJECT_ATTRIBUTES 結構。 呼叫端先前必須呼叫 WDF_OBJECT_ATTRIBUTES_INIT 函式,才能初始化這個結構。 在此呼叫之後,但在呼叫 SpbControllerSetRequestAttributes之前,呼叫端可以變更這個結構中下列成員的值:

  • EvtCleanupCallback
  • EvtDestroyCallback
  • ContextSizeOverride
  • ContextTypeInfo
SpbControllerSetRequestAttributes 會使用這些值作為 SPBREQUEST 物件的預設屬性。 不過,驅動程式無法變更包含在 ExecutionLevelSynchronizationScopeParentObject 成員中的預設屬性值。 這些成員必須與 WDF_OBJECT_ATTRIBUTES_INIT 函式初始化這些成員的值保持不變。

WDF_OBJECT_ATTRIBUTES_INIT 會將 EvtCleanupCallbackEvtDestroyCallback 成員初始化為 NULL。 如果您將這些預設值變更為註冊 EvtCleanupCallbackEvtDestroyCallback 回呼函式,則每次 I/O 要求抵達 SpbCx 管理的 SPB 控制器佇列時,都會呼叫此函式。 這類 I/O 要求會導致 EvtCleanupCallbackEvtDestroyCallback 函式呼叫,即使 SpbCx 從未向 SPB 控制器驅動程式提出要求(因為要求在到達佇列之後取消,但在傳遞至驅動程式之前也一樣)。

SPB 控制器驅動程式必須先呼叫 SpbControllerSetRequestAttributes,才能 認可裝置物件,也就是,在從 EvtDriverDeviceAd d 回呼或將 PDO 新增至控制器的子清單之前。 子清單代表連接至總線的裝置。 如需詳細資訊,請參閱 列舉總線上的裝置

要求

要求 價值
最低支援的用戶端 從 Windows 8 開始提供。
目標平臺 普遍
標頭 spbcx.h
連結庫 Spbcxstubs.lib
IRQL PASSIVE_LEVEL

另請參閱

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT