共用方式為


(portcls.h) 的 IPinCount::P inCount 方法

方法 PinCount 會查詢迷你埠驅動程序的針腳計數。

語法

void PinCount(
  [in]      ULONG  PinId,
  [in, out] PULONG FilterNecessary,
  [in, out] PULONG FilterCurrent,
  [in, out] PULONG FilterPossible,
  [in, out] PULONG GlobalCurrent,
  [in, out] PULONG GlobalPossible
);

參數

[in] PinId

指定針腳標識碼。 如果篩選包含 n 個針腳處理站,有效的針腳標識碼範圍從 0 到 n-1

[in, out] FilterNecessary

指定針腳處理站在篩選可以執行 I/O 作業之前應該具現化的最小針腳數目。

[in, out] FilterCurrent

指定目前的針腳實例數目。 這個數位會計算針腳處理站已在篩選上具現化的針腳。

[in, out] FilterPossible

指定針腳處理站可以在篩選上具現化的最大針腳數目。 如果沒有最大值,請將 設定為 KSINSTANCE_INDETERMINATE。

[in, out] GlobalCurrent

指定針腳處理站在驅動程式上具現化的目前針腳數目。

[in, out] GlobalPossible

指定針腳處理站可以在驅動程式上具現化的最大針腳數目。 如果沒有最大值,請將 設定為 KSINSTANCE_INDETERMINATE。

傳回值

備註

呼叫 PinCount 有兩個用途:

  • 若要讓迷你埠驅動程式知道目前的針腳計數。
  • 若要讓迷你埠驅動程序有機會改變目前的針腳計數。
FilterNecessaryFilterCurrentFilterPossibleGlobalCurrentGlobalPossible 都是 IN+OUT 參數,指向迷你埠驅動程式篩選描述中的值。 在 PinCount 呼叫期間,迷你埠驅動程式可以檢查這些值,並可以選擇編輯這些值,以便更精確地指出可從其餘資源建立多少個額外的針腳。

FilterCurrentFilterPossible 會 指定 PinId 所指定之針腳處理站的每個篩選值。

GlobalCurrentGlobalPossible 會針對篩選條件的所有實例指定針腳處理站的總值。

迷你埠驅動程式通常不需要變更 FilterNecessary 參數,但為了完整性而包含它。

IPort::Init 呼叫期間,埠驅動程式會呼叫 miniport 驅動程式的 IMiniport::GetDescription 方法來取得篩選描述元的指標,其中包含迷你埠驅動程式的 pin-descriptor 陣組 (請參閱 PCPIN_DESCRIPTOR) 。 之後,埠驅動程式會存取針腳描述項,以響應針腳屬性的查詢。

如果迷你埠驅動程序支援 IPinCount 介面,埠驅動程式會呼叫 PinCount ,讓迷你埠驅動程式有機會在回復 Pin 屬性要求之前更新針腳計數。 如果迷你埠驅動程式不支援 IPinCount,埠驅動程式只會使用針腳描述元陣列中的靜態針腳計數限制。

連接埠驅動程式會在收到下列其中一個 KS 屬性要求時呼叫 PinCount 方法:

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls 也會在每次建立新的數據流時呼叫 PinCount 方法。

迷你埠驅動程式不得明確造成從 方法內 PinCount 建立或終結數據流。 迷你埠驅動程式不會在此呼叫期間限制它們所能執行的動作。

方法 PinCount 會在 IRQL PASSIVE_LEVEL呼叫。 這個方法的程式代碼必須位於分頁記憶體中。

規格需求

需求
目標平台 Universal
標頭 portcls.h (包含 Portcls.h)
IRQL PASSIVE_LEVEL

另請參閱

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR