KsCreateFilterFactory 函式 (ks.h)
** KsCreateFilterFactory** 函式會將篩選處理站新增至指定的裝置。
語法
KSDDKAPI NTSTATUS KsCreateFilterFactory(
[in] PDEVICE_OBJECT DeviceObject,
[in] const KSFILTER_DESCRIPTOR *Descriptor,
[in, optional] PWSTR RefString,
[in, optional] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] ULONG CreateItemFlags,
[in, optional] PFNKSFILTERFACTORYPOWER SleepCallback,
[in, optional] PFNKSFILTERFACTORYPOWER WakeCallback,
[out, optional] PKSFILTERFACTORY *FilterFactory
);
參數
[in] DeviceObject
要為其新增篩選處理站之 DEVICE_OBJECT 結構的指標。
[in] Descriptor
KSFILTER_DESCRIPTOR 的指標,描述此處理站可以建立之個別篩選的特性。
[in, optional] RefString
如果提供此自變數,此字串會作為此處理站所建立篩選條件的參考字串。 否則,會使用描述元中提供的參考 GUID。
[in, optional] SecurityDescriptor
要在此篩選處理站建立篩選時使用的安全性描述元。 如果 NULL,則不會提供描述元。
[in] CreateItemFlags
下表列出迷你驅動程式寫入器用來指定新篩選處理站可以建立之篩選特性的旗標。 將此參數設定為下方旗標的位 OR。
旗 | 意義 |
---|---|
KSCREATE_ITEM_SECURITY_CHANGED | 表示這個物件類型上的安全性描述元已經變更,而且應該保存。 |
KSCREATE_ITEM_WILDCARD | 表示這個建立專案代表通配符,用於不符合任何其他建立專案的任何建立要求。 建立項目清單中的通配符項目順序無關。 在任何建立專案清單上,只有單一通配符專案有效。 |
KSCREATE_ITEM_NOPARAMETERS | 表示此建立項目不允許傳遞任何參數,如果找到任何參數,就會失敗。 (一般而言,create 參數會傳遞至 create 處理程式。此旗標不能與通配符旗標搭配使用。 |
KSCREATE_ITEM_FREEONSTOP | 表示當 PnP 管理員傳送 IRP_MN_STOP_DEVICE時,應該釋放建立專案。 請注意,當裝置收到 PnP 停止時,AVStream 會自動釋放這類建立專案(在用戶端收到 PnP 停止通知之後)。 |
[in, optional] SleepCallback
迷你驅動程式提供的例程指標,可接收與此篩選器相關聯之裝置進入睡眠狀態的通知。 建立例程的原型,如下所示:
void SleepCallback (IN PKSFILTERFACTORY FilterFactory,
IN DEVICE_POWER_STATE State);
如果此參數 NULL,則此篩選處理站不會通知裝置進入睡眠狀態。 請參閱 裝置電源狀態。
[in, optional] WakeCallback
迷你驅動程式提供的例程指標,可接收與此篩選相關聯的裝置正在喚醒的通知。 建立例程的原型,如下所示:
void WakeCallback (IN PKSFILTERFACTORY FilterFactory,
IN DEVICE_POWER_STATE State);
如果此參數 NULL,則此篩選處理站不會通知裝置正在喚醒。 請參閱 裝置電源狀態。
[out, optional] FilterFactory
KSFILTERFACTORY 結構的指標,AVStream 設定為指向新建立的篩選處理站物件。 如果未指定這個選擇性參數,則呼叫端不會得知產生的篩選處理站物件。
傳回值
如果可以建立篩選處理站,則傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤碼。
言論
如果您在 AVStrMiniDevicePostStart之後呼叫 KsCreateFilterFactory ),則必須呼叫 KsFilterFactorySetDeviceClassesState 來啟用裝置類別。 (也呼叫 KsFilterFactorySetDeviceClassesState 以停用篩選處理站。
如果您在 AVStrMiniDevicePostStart 或之前的內容中呼叫 KsCreateFilterFactory,則不需要這麼做。
呼叫此函式之前,minidriver 必須取得裝置 Mutex。 如需如何執行這項作的詳細資訊,請參閱AVStream中的 Device Mutex。
迷你驅動程式應該使用這個函式,這些驅動程式可以自行初始化,而不呼叫 KsInitializeDriver,或是必須動態新增和移除新的篩選類型。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Microsoft Windows XP 和更新版本的作系統和 DirectX 8.0 和更新版本的 DirectX 版本中提供。 |
目標平臺 | 普遍 |
標頭 | ks.h (包括 Ks.h) |
連結庫 | Ks.lib |
IRQL | PASSIVE_LEVEL |