Функция KsSynchronousDeviceControl (ksproxy.h)

Функция KsSynchronousDeviceControl выполняет синхронную операцию управления вводом-выводом устройства для объекта KS, указанного дескриптором файла.

Синтаксис

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 , чтобы запрашивать, чтобы объект KS, указанный в параметре Handle , уведомлял приложение при каждом возникновении определенного действия события. Задайте inBuffer , чтобы указать структуру KSEVENT , которая указывает событие набора событий, о котором следует уведомлять. Задайте OutBuffer , чтобы указать структуру KSEVENTDATA , которая описывает, как объект KS должен уведомлять приложение о возникновении события. См. также раздел События KS.
  • Присвойте ioControlзначение IOCTL_KS_DISABLE_EVENT , чтобы сообщить объекту KS, указанному в дескрипторове , чтобы прекратить уведомлять приложение при возникновении определенного действия события. Задайте inBuffer , чтобы указать структуру KSEVENTDATA , которая ранее использовалась в запросе уведомления о событиях.
Чтобы получить список всех свойств, событий или методов, поддерживаемых фильтром, приложение может задать для IoControl значение IOCTL_KS_PROPERTY, IOCTL_KS_ENABLE_EVENT или IOCTL_KS_METHOD. Для структуры KSPROPERTY, KSEVENT или KSMETHOD, на которую указывает InBuffer , задайте для элемента Set значение GUID_NULL, а для элемента Flags — значение KSPROPERTY_TYPE_SETSUPPORT.

После вызова KsSynchronousDeviceControlOutBuffer будет содержать массив идентификаторов GUID набора, поддерживаемых объектом, заданным параметром Handle.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть ksproxy.h (включая Ksproxy.h)
Библиотека Ksproxy.lib

См. также раздел

IKsObject::KsGetObjectHandle

IOCTL_KS_DISABLE_EVENT

IOCTL_KS_ENABLE_EVENT

IOCTL_KS_METHOD

IOCTL_KS_PROPERTY

KSEVENT

KSEVENTDATA

KSMETHOD

KSPROPERTY