KsSynchronousDeviceControl 函式 (ksproxy.h)
KsSynchronousDeviceControl 函式會向檔句柄指定的 KS 對象發出同步裝置 I/O 控制作業。
語法
KSDDKAPI HRESULT KsSynchronousDeviceControl(
[in] HANDLE Handle,
[in] ULONG IoControl,
[in, optional] PVOID InBuffer,
[in] ULONG InLength,
[out, optional] PVOID OutBuffer,
[in] ULONG OutLength,
[in, out] PULONG BytesReturned
);
參數
[in] Handle
要執行作業的 KS 物件句柄。
[in] IoControl
控制程式代碼,識別要對 KS 物件執行的特定作業類型。
[in, optional] InBuffer
緩衝區的指標,其中包含指定要執行之作業的數據。
[in] InLength
在 InBuffer的緩衝區大小,以位元組為單位。
[out, optional] OutBuffer
緩衝區的指標,其中包含作業的數據,或接收作業數據的緩衝區空間。
[in] OutLength
在 outBuffer 緩衝區的大小,以位元組為單位,。
[in, out] BytesReturned
接收 KsSynchronousDeviceControl 數據大小之變數的指標, 儲存在緩衝區 OutBuffer。
傳回值
如果成功,則傳回 NOERROR;否則,會傳回錯誤碼。
言論
若要擷取 KS 物件的句柄,應用程式應該呼叫 IKsObject::KsGetObjectHandle 方法。
應用程式可以在 IoControl 中設定控件程式代碼,以及在 inBuffer 和 OutBuffer 設定緩衝區,如下所示來指定要執行的作業:
- 將ioControl 設定為 IOCTL_KS_PROPERTY,以存取屬性。 將 InBuffer 設定為指向 KSPROPERTY 結構,指定要存取之屬性的屬性,以及是否要擷取屬性的相關信息或設定屬性中的資訊。 若要在 屬性中設定資訊,請將 OutBuffer 設定為指向該資訊。 若要從 屬性擷取資訊,請將 OutBuffer 設定為接收該資訊。
- 將 IoControl 設定為 IOCTL_KS_METHOD 來執行方法。 將 InBuffer 設定為指向 KSMETHOD 結構,指定要執行的方法方法,以及讀取和/或寫入與方法相關的數據。 若要讀取數據,請將 OutBuffer 設定為指向該數據。 若要寫入數據,請將 outBuffer 設定為接收該數據。
- 將 IoControl 設定為 IOCTL_KS_ENABLE_EVENT,以要求 Handle 所指定的 KS 物件 每當發生特定事件動作時通知應用程式。 將 InBuffer 設定為指向 KSEVENT 結構,以指定要通知的事件集事件。 設定 OutBuffer 指向 KSEVENTDATA 結構,描述 KS 物件在事件發生時應如何通知應用程式。 另請參閱 KS 事件。
- 將 ioControl 設定為 IOCTL_KS_DISABLE_EVENT,以通知 Handle 所指定的 KS 物件,以在發生特定事件動作時停止通知應用程式。 將 InBuffer 設定為指向先前用於事件通知要求 KSEVENTDATA 結構。
呼叫 KsSynchronousDeviceControl之後,OutBuffer 會包含由 Handle所指定之物件所支援的一組 GUID 陣列。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | ksproxy.h (包括 Ksproxy.h) |
連結庫 | Ksproxy.lib |