ScsiPortWmiSetInstanceCount 函式 (scsiwmi.h)

ScsiPortWmiSetInstanceCount 會指定數據緩衝區必須放在要求內容中WNODE_ALL_DATA結構內的實例數目。

注意 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型未來可能會改變或無法使用。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。
 

語法

BOOLEAN ScsiPortWmiSetInstanceCount(
  [in]  PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]  ULONG                    InstanceCount,
  [out] PULONG                   BufferAvail,
  [out] PULONG                   SizeNeeded
);

參數

[in] RequestContext

包含 WMI SRB 要求內容 之類型SCSIWMI_REQUEST_CONTEXT 結構的指標。

[in] InstanceCount

包含迷你驅動程式將提供數據的實例數目。

[out] BufferAvail

在傳回時,會包含可用於描述實例名稱和數據的緩衝區空間位元組數目。 此成員中傳回的值可以傳遞至這些例程的 BufferAvail 參數中的 ScsiPortWmiSetDataScsiPortWmiSetInstanceName

ScsiPortWmiSetInstanceCount 例程會初始化數據緩衝區指標陣列,每個實例都有一個數位元素。 如果 WNODE 中沒有足夠的記憶體可初始化 size InstanceCount 的數位,則會在此成員中傳回零。

[out] SizeNeeded

表示在輸入時,在 WNODE 中設定內部數位 之前 ,描述整個 WNODE 所需的位元組數目。 傳回時,這個成員會包含整個 WNODE 的大小,包括 WNODE 內新初始化的數位。

傳回值

如果作業成功,則 ScsiPortWmiSetInstanceCount 例程會傳回 TRUE;如果要求內容中包含的 WNODE 不是類型WNODE_ALL_DATA,則傳回 FALSE

備註

minidriver 必須先呼叫 ScsiPortWmiSetInstanceCount ,才能呼叫 ScsiPortWmiSetDataScsiPortWmiSetInstanceName。 迷你驅動程序應該只呼叫 ScsiPortWmiSetInstanceCount 一次。

RequestContext 參數指向要求內容結構 SCSIWMI_REQUEST_CONTEXT,其中包含與 Windows Management Instrumentation (WMI) SCSI 要求區塊 (SRB) 相關聯的資訊。 接著,要求內容結構會包含WMI系統用來在使用者模式數據取用者和核心模式數據提供者之間傳遞數據的其中一個 WMI WNODE_XXX 結構 ,例如驅動程式。

ScsiPortWmiSetInstanceCount 例程需要要求內容中定義的 WNODE 結構必須是類型WNODE_ALL_DATA。 這是因為 ScsiPortWmiSetInstanceCount 會保留與 WMI 數據區塊相關聯之多個實例的信息區域。 不同於包含單一實例資訊的 WNODE_SINGLE_INSTANCE 結構,WNODE_ALL_DATA結構包含不同實例之緩衝區區域的指標數位,而 ScsiPortWmiSetInstanceCount 會初始化此數位,以便使用實例索引個別存取實例數據的每個緩衝區。

配置給要求內容的記憶體必須維持有效狀態,直到迷你埠驅動程式呼叫 ScsiPortWmiPostProcess 之後, ScsiPortWmiPostProcess 才會傳回最終的 SRB 狀態和緩衝區大小。 如果 SRB 可以畫筆,應該從 SRB 擴充功能配置要求內容的記憶體。 如果 SRB 無法畫筆,則可以從未超出範圍的堆疊框架配置記憶體。

規格需求

需求
目標平台 桌面
標頭 scsiwmi.h (包括 Miniport.h、Scsi.h)

另請參閱

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE