Функция GetNamedPipeInfo
Еще одна функция, позволяющая получить информацию об именованном канале по его идентификатору, называется GetNamedPipeInfo:
BOOL GetNamedPipeInfo(
HANDLE hNamedPipe, // идентификатор канала
LPDWORD lpFlags, // адрес флагов типа канала
LPDWORD lpOutBufferSize, // адрес размера выходного буфера
LPDWORD lpInBufferSize, // адрес размера входного буфера
LPDWORD lpMaxInstances); // адрес максимального количества
// реализаций канала
Параметр hNamedPipe задает идентфикатор именованного канала Pipe, для которого требуется получить информацию.
Через параметр lpFlags функции GetNamedPipeInfo необходимо передать адрес переменной типа DWORD или NULL, если флаги определять не требуется. Ниже мы привели возможные значения флагов:
Флаг | Описание | ||
PIPE_CLIENT_END | Идентификатор ссылается на клиентскую часть канала | ||
PIPE_SERVER_END | Идентификатор ссылается на серверную часть канала | ||
PIPE_TYPE_MESSAGE | Канал работает в режиме передачи сообщений |
В переменные, адреса которых задаются через параметры lpOutBufferSize и lpInBufferSize, функция GetNamedPipeInfo заносит размеры входного и выходного буфера, соответственно. Если эта информация не нужна, передайте через параметры lpOutBufferSize и lpInBufferSize значение NULL.
И, наконец, через параметр lpMaxInstances передается адрес переменной, в которую будет записано максимальное значение реализаций, которое можно создать для данного канала. Если после вызова функции GetNamedPipeInfo в этой переменной записано значение PIPE_UNLIMITED_INSTANCES, количество реализаций ограничивается только свободными системными ресурсами.
В случае успешного завершения функция GetNamedPipeInfo возвращает значение TRUE, а при ошибке - FALSE. Код ошибки можно получить, вызвав функцию GetLastError.