Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод GetPosition получает текущее положение потока.
Синтаксис
NTSTATUS GetPosition(
[out] PULONG Position
);
Параметры
[out] Position
Указатель вывода для значения позиции. Этот параметр указывает на выделенную вызывающим переменную, в которую метод записывает текущую позицию байтов потока.
Возвращаемое значение
GetPosition возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае метод возвращает соответствующий код ошибки.
Замечания
GetPosition сообщает текущее положение воспроизведения или записи потока. Позиция выражается как смещение байтов с начала буфера DMA и представляет лучшую оценку положения байтов данных в настоящее время в DAC или ADC.
Позиция равна нулю сразу после инициализации потока. Переход к состоянию KSSTATE_STOP (см. KSSTATE) сбрасывает позицию до нуля. Когда поток останавливается переходом от KSSTATE_RUN к KSSTATE_PAUSE или KSSTATE_ACQUIRE, позиция зависает. Он отменяет при переходе потока с KSSTATE_PAUSE или KSSTATE_ACQUIRE обратно в KSSTATE_RUN.
GetPosition указывает позицию в виде смещения в циклический буфер. Когда позиция достигает конца циклического буфера, она обтекается в начало буфера. Поэтому позиция никогда не превышает размер буфера.
Обратите внимание, что значение смещения, полученное вызовом GetPosition, является одним из следующих:
-
Для потока отрисовки метод
GetPositionизвлекает положение воспроизведения, которое является смещением байтов образца, который в настоящее время воспроизводится через DAC и передается через джек динамик. -
Для потока записи метод
GetPositionизвлекает позицию записи, которая является смещением байтов последнего примера, который будет получен через разъем микрофона и захвачен ADC.
Некоторые звуковые оборудование содержит регистр позиции для отслеживания смещения байтов примера в настоящее время в каждом DAC или ADC, в этом случае метод GetPosition просто извлекает содержимое регистра позиции для соответствующего потока. Другое звуковое оборудование может предоставить драйверу только указатели DMA в звуковые буферы, в этом случае метод GetPosition должен обеспечить оптимальную оценку смещения байтов в DAC или ADC на основе текущей позиции DMA и задержки буферизации на устройстве.
Звуковое оборудование, которое внутренне буферизирует часть воспроизведения или потока записи, может сделать точное чтение положения более сложным для получения. В этом случае драйвер должен оценить текущее положение максимально точно. Например, если звуковое устройство предварительно получает поток воспроизведения во внутренний буфер, драйвер может принять как размер буфера, так и сведения о времени, чтобы правильно оценить положение воспроизведения.
Драйвер порта WaveCyclic реализует обработчик свойств для KSPROPERTY_AUDIO_POSITION. Этот обработчик свойств вызывает метод GetPosition для получения текущей позиции воспроизведения или записи от минипорт-драйвера. Дополнительные сведения см. в свойстве позиции звука.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | portcls.h (include Portcls.h) |
| IRQL | <=DISPATCH_LEVEL |