Функция обратного вызова 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 |