Поделиться через


Метод IMiniportWaveRTOutputStream::GetPacketCount (portcls.h)

GetPacketCount возвращает (на основе 1) количество пакетов, полностью переданных из буфера WaveRT в оборудование.

Синтаксис

NTSTATUS GetPacketCount(
  [out] ULONG *pPacketCount
);

Параметры

[out] pPacketCount

pPacketCount возвращает количество пакетов, полностью переданных из буфера WaveRT в оборудование.

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

GetPacketCount возвращает STATUS_SUCCESS, если вызов был успешным. В противном случае функция возвращает соответствующий код состояния ошибки.

Комментарии

Из числа пакетов ОС может наследовать позицию потока пакетов, записываемых в буфер WaveRT. Ос также может наследовать позицию буфера WaveRT следующего пакета для записи в буфер WaveRT. Для драйверов WaveRT драйвер сигнализирует об одном событии уведомления при передаче данных из каждого пакета буфера WaveRT. Поэтому само по себе событие не может указать, какой пакет в буфере WaveRT передается. В обычной работе это не является проблемой, но в случаях с неполным потоком исправление легче достигается путем запроса количества пакетов, из которого ОС может определить, какой пакет будет записываться далее.

Возвращаемое значение PacketCount указывает (на основе 1) количество пакетов, полностью переданных из буфера WaveRT в оборудование. На основе этого ОС может определить номер передаваемого пакета на основе 0 и обеспечить запись перед этим пакетом. Например, если число пакетов равно 5, то 5 пакетов полностью переданы. То есть пакеты 0–4 полностью переданы. Поэтому выполняется пакет 5, и ОС должна записать пакет 6. Если число уведомлений для буфера WaveRT равно 2, то пакет 6 будет иметь смещение 0 в буфере WaveRT (так как 6 по модулю 2 равно 0, а размер пакета в 0 раз равен 0).

Ос может получить это свойство в любое время. Однако обычно оно получает это свойство только периодически или после того, как драйвер возвращает ошибку потока данных (STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN) из SetWritePacket() для повторной синхронизации с драйвером.

Драйвер должен сбросить число пакетов до 0, когда поток находится в KSSTATE_STOP.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 10 и более поздних версиях.
Целевая платформа Windows
Header portcls.h
IRQL Пассивный уровень

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

IMiniportWaveRTOutputStream