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


Метод 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 и более поздних версиях.
целевая платформа Виндоус
заголовка portcls.h
IRQL Пассивный уровень

См. также

IMiniportWaveRTInputStream