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