微型驅動程式會為每種要實例化的針腳類型提供 KSPIN_DESCRIPTOR 結構。 接腳描述符結構稱為接腳工廠。 每個針腳處理站都可以具現化特定類型的一或多個針腳實例。 針腳處理站包含數個陣列,可描述此描述元具現化的針腳類型。
迷你驅動程式會在 KSPIN_DESCRIPTOR 的 Categories 成員中指定一或多個 KS 類別,該類別所屬的針腳是由此描述元建立的。 KS 在建置濾鏡圖形時,會使用類別來連接埠實例。 KSPROPERTY_TOPOLOGY_CATEGORIES 屬性會查詢驅動程式支援的功能類別陣列。
迷你驅動程式會提供 INF 檔案,以註冊一或多個插腳裝置名稱。 安裝時,作業系統會將名稱和對應的類別載入到系統登錄中。 然後,用戶端可以使用這些裝置名稱進行建立檔案呼叫,以具現化針腳。
使用者模式用戶端會使用裝置的名稱呼叫 Win32 函式 CreateFile 。 例如,“\\.\filters\audio\default renderer” 可能是已配置為默認輸出的音頻設備的鏈接。 核心模式用戶端會從核心模式呼叫 ZwCreateFile 。 建立檔案常式傳回檔案控制碼之後,KS 用戶端會透過 KS 屬性與 pin 實例通訊。
在針腳描述元結構中,迷你驅動程式會配置 KSPIN_INTERFACE 結構和 KSPIN_MEDIUM 結構陣列,以指定該針腳處理站所支援的 介面 和 媒體 。 KSPIN_DESCRIPTOR 也是小型驅動程式指定工廠生成的針腳的有效數據範圍的地方。 它會藉由提供 KSDATARANGE 結構陣列的指標來執行此動作。 迷你驅動程式也會指定此針腳處理站所建立之新針腳的資料和通訊流程方向。
迷你驅動程式可藉由支援 KSPROPSETID_Pin 屬性集,啟用針腳處理站的執行時間探索。
若要建立 Pin 連接,請呼叫 KsCreatePin 函式。 在此呼叫中,迷你驅動程式會傳遞指標至類型 KSPIN_CONNECT 的結構,以描述所要求的連線。 建立引腳時,篩選器會將新的引腳視為隸屬於該篩選器檔案物件的另一檔案物件。
迷你驅動程式會呼叫 KsValidateConnectRequest,使用在產生的IRP_MJ_CREATE中提供的描述符結構。 此常式會驗證這些結構,並傳回連線結構和根檔案物件的指標。
迷你驅動程式會使用 KSPIN_DESCRIPTOR 結構的 DataFlow 和 Communication 成員來定義下列針腳詳細資料:
IRP 來源針腳與 IRP 接收針腳
IRP 來源針腳會發出 IRP;IRP 匯點針腳會接收它們。 使用者模式用戶端會透過相關的檔案控制碼,將 I/O 請求直接發送至 IRP 匯入接腳。 客戶端會使用 KSPROPERTY_PIN_COMMUNICATION 來檢查資料是否流入或流出 pin 類型。
資料來源針腳與資料接收針腳
數據源針腳是篩選上的輸出針腳;數據接收針腳是輸入針腳。 資料來源或接收的屬性與 IRP 來源或接收無關。 例如,用戶端可以將數據源、IRP 接收針腳連線到數據接收、IRP 來源針腳。 用戶端會使用 KSPROPERTY_PIN_DATAFLOW 來檢查資料是否流入或流出針腳類型。
終止連接時,必須先關閉來源端的接點控制代碼,再終結底層檔案物件。 如果來源針腳依賴接收針腳所提供的資源,則接收針腳負責在連線終止時通知來源。
用戶端透過呼叫 DeviceIoControl 例程(如 Microsoft Windows SDK 文件中所述),使用 IRP_MJ_DEVICE_CONTROL 與核心串流針腳互動。 呼叫端會藉由放置在 I/O 堆疊位置結構中 Parameters.DeviceIoControl.IoControlCode 的 I/O 控制程式代碼來識別其要求。
為了支援要求,迷你驅動程式會在呼叫 KsAllocateObjectHeader 時提供 KSDISPATCH_TABLE 結構的指標。
寫入要求包含一個指向 KSSTREAM_HEADER 結構陣列的指標,而該陣列又包含指向串流資料的指標。 讀取要求包含指向應傳回讀取資料的空標頭結構陣列的指標。