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


Функция SerCxGetRingBufferUtilization (sercx.h)

Метод SerCxGetRingBufferUtilization позволяет драйверу последовательного контроллера определить, сколько из буфера кругового круга типа заполняется данными, полученными из последовательного порта.

Синтаксис

void SerCxGetRingBufferUtilization(
  [in]            WDFDEVICE Device,
  [out, optional] PULONG    BytesUsed,
  [out, optional] PULONG    BufferSize
);

Параметры

[in] Device

Дескриптор WDFDEVICE для объекта устройства платформы, представляющего последовательный контроллер.

[out, optional] BytesUsed

Количество байтов непрочитанных данных, которые в настоящее время содержатся в буфере круговых вызовов типа, который используется для хранения полученных данных.

[out, optional] BufferSize

Размер в байтах буфера кругового круга типа, который используется для хранения полученных данных.

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

Никакой

Замечания

Драйвер последовательного контроллера вызывает эту функцию, чтобы определить, сколько дискового пространства доступно в буфере круга перед типом. Расширение последовательного контроллера (SerCx) сохраняет этот буфер для хранения данных, получаемых драйвером последовательного контроллера из последовательного порта, когда в данный момент не обрабатывается запрос на чтение от клиента. Эта функция предоставляет сведения, необходимые драйверу для точного выполнения управления потоком программного обеспечения (XON/XOFF).

Чтобы реализовать управление потоком программного обеспечения, драйвер последовательного контроллера отслеживает объем свободного места, доступного в буфере кругового круга типа. Доступное пространство в байтах равно BufferSize - BytesUsed. Если доступное пространство меньше порогового значения, указанного клиентом, XoffLimit, драйвер последовательного контроллера передает символ XOFF, чтобы сообщить порту передачи для приостановки передачи. Позже, когда доступное пространство поднимается над заданным клиентом пороговым значением, XonLimit, драйвер передает символ XON, чтобы сообщить порту передачи возобновить передачу. Как правило, клиент указал эти два порога в предыдущем запросе управления IOCTL_SERIAL_SET_HANDFLOW ввода-вывода.

SerCx оценивает доступное пространство в буфере круговых вызовов типа в контексте текущих параметров управления потоком и подтверждения. После полного очистки буфера звонка типа SerCx вызывает драйвера EvtSerCxReceive функцию обратного вызова, чтобы драйвер смог отправить XON и возобновить получение данных. Функция EvtSerCxReceive может вызывать SerCxGetRingBufferUtilization, чтобы определить, следует ли отправлять XON.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8.
целевая платформа Всеобщий
заголовка sercx.h
IRQL <= DISPATCH_LEVEL

См. также

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW