Функция обратного вызова PFNKSPINSETDEVICESTATE (ks.h)

Подпрограмма AVStrMiniPinSetDeviceState мини-драйвера AVStream вызывается при изменении состояния структуры KSPIN из-за получения IOCTL свойства состояния подключения set. Как правило, это предоставляется мини-драйверами, которым необходимо изменить состояние оборудования.

Синтаксис

PFNKSPINSETDEVICESTATE Pfnkspinsetdevicestate;

NTSTATUS Pfnkspinsetdevicestate(
  [in] PKSPIN Pin,
  [in] KSSTATE ToState,
  [in] KSSTATE FromState
)
{...}

Параметры

[in] Pin

Указатель на структуру KSPIN , для которой изменяется состояние.

[in] ToState

Целевой KSSTATE после получения IOCTL.

[in] FromState

Предыдущий KSSTATE.

Возвращаемое значение

Возвращает STATUS_SUCCESS или код ошибки, возвращенный при попытке задать состояние. Не возвращайте STATUS_PENDING. Мьютекс элемента управления фильтром удерживается во время выполнения этой функции. См . статью Фильтрация мьютекса элемента управления в AVStream.

Комментарии

Мини-driver указывает адрес этой подпрограммы в элементе SetDeviceState структуры KSPIN_DISPATCH .

Мини-накопители не будут получать остановку при первоначальном подключении контакта.

Контакты, использующие стандартный транспортный механизм (стандартный интерфейс или стандартный носитель или явное использование KSPIN_FLAG_USE_STANDARD_TRANSPORT в KSPIN_DESCRIPTOR_EX), получают изменения отфильтрованного состояния через канал-владение через эту подпрограмму. Это означает, что переход не будет выполняться более одного шага. Другими словами, KSSTATE_STOP переходы к KSSTATE_ACQUIRE, KSSTATE_ACQUIRE переходы к KSSTATE_PAUSE и т. д. Кроме того, изменения состояния, полученные в этой подпрограмме, представляют состояние канала в целом, а не отдельное состояние контакта, как указано в элементе DeviceState структуры KSPIN.

Контакты, которые не используют стандартный механизм транспорта (нестандартный интерфейс, нестандартная среда или явное использование KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT в KSPIN_DESCRIPTOR_EX), получают изменения нефильтрованного состояния через эту подпрограмму. Таким образом, нестандартные транспортные контакты должны быть готовы к изменениям состояния, которые переходят более одного шага. В качестве примера рассмотрим переход от KSSTATE_RUN к KSSTATE_STOP без промежуточного KSSTATE_PAUSE. Кроме того, состояние, сообщаемое этой подпрограмме, будет идентично состоянию, сообщаемого в элементе DeviceState соответствующей структуры KSPIN.

Эта подпрограмма является необязательной.

Требования

Требование Значение
Минимальная версия клиента Доступно в операционных системах Microsoft Windows XP и более поздних версиях, а также DirectX 8.0 и более поздних версий.
Целевая платформа Персональный компьютер
Верхняя часть ks.h (включая Ks.h)
IRQL PASSIVE_LEVEL

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

KSPIN_DISPATCH