Функция 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
Размер (в байтах) кольцевого буфера упреждающего типа, используемого для хранения полученных данных.
Возвращаемое значение
None
Remarks
Драйвер последовательного контроллера вызывает эту функцию, чтобы определить, сколько дискового пространства доступно в кольцевом буфере упреждающего типа. Расширение последовательного контроллера (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 |