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


Метод IMiniportWaveRTInputStream::GetReadPacket (portcls.h)

Возвращает сведения о захваченных данных.

Синтаксис

NTSTATUS GetReadPacket(
  [out] ULONG   *PacketNumber,
  [out] DWORD   *Flags,
  [out] ULONG64 *PerformanceCounterValue,
  [out] BOOL    *MoreData
);

Параметры

[out] PacketNumber

Возвращает номер пакета относительно начала записи.

[out] Flags

Зарезервировано для последующего использования. Должен иметь значение 0.

[out] PerformanceCounterValue

Возвращает значение счетчика производительности, соответствующее моменту выборки первой выборки в пакете.

[out] MoreData

Возвращает значение TRUE , если есть дополнительные данные, готовые немедленно. Ос может при необходимости сразу же вызвать эту подпрограмму после обработки пакета, чтобы получить сведения о следующем пакете. Если драйвер возвращает значение FALSE, запись выполняется в режиме реального времени.

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

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

STATUS_DEVICE_NOT_READY — драйвер возвращает эту ошибку, если нет новых данных.

Комментарии

Перед чтением захваченных звуковых данных из буфера WaveRT ОС вызывает эту подпрограмму для получения сведений о доступных данных.

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

Размер пакета — это размер буфера WaveRT, разделенный на значение NotificationCount, передаваемое в IMiniportWaveRTStreamNotification::AllocateBufferWithNotification. Операционная система может вызвать эту подпрограмму в любое время. В обычной работе ОС вызывает эту подпрограмму после установки драйвером события уведомления буфера или после того, как предыдущий вызов возвращает значение true для MoreData. Когда ОС вызывает эту подпрограмму, драйвер может предположить, что ОС закончила чтение всех предыдущих пакетов. Если оборудование захватило достаточно данных, драйвер может немедленно пришвырнуть следующий полный пакет в буфер WaveRT и снова установить событие буфера. В случае переполнения записи (когда ОС недостаточно быстро считывает данные) звуковой драйвер может удалить или перезаписать некоторые звуковые данные. Аудиодрайвер сначала удаляет или перезаписывает самые старые данные. Аудиодрайвер может продолжать продвигать свой внутренний счетчик пакетов, даже если ОС может не прочитать данные.

Требования

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

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

IMiniportWaveRTInputStream