Составители:
Два последних параметра используются только для каналов, устанавливающих
связь с удаленным компьютером. Они определяют, каким образом система будет управ-
лять буферизацией в сети при передаче информации. Эти параметры не влияют на кана-
лы, созданные с атрибутом PIPE_FLAG_WRITE_THROUGH, который запрещает буфе-
ризацию в сети. Буферизация дает возможность системе комбинировать несколько
сообщений и передавать их одновременно, за один сеанс. Причем исходящие сообщения
накапливаются в буфере до тех пор, пока не произойдет заполнение буфера или не за-
кончится заданный временной интервал. Размер накопительного буфера задается пара-
метром lpdwMaxCollect, а значение временного интервала, выраженное в миллисекун-
дах, - параметром lpdwCollectDataTimeout.
Имеется три функции, позволяющие получить информацию о канале, не изменяя
его атрибутов [12].
Первая функция является "двойником" функции SetNamedPipeHandleState(), одна-
ко она кроме той информации, которая устанавливается функцией SetNamedPipeHan-
dleState(), позволяет получить много дополнительных сведений:
BOOL GetNamedPipeHandleState(
HANDLE hNamedPipe, // дескриптор именованного канала
LPDWORD lpdwModes, // режимы чтения и ожидания
LPDWORD lpdwInstances, // количество экземпляров текущего канала
LPDWORD lpcbMaxConnect, // максимальное количество байтов,
// накапливаемых до начала удаленной передачи
LPDWORD lpdwConnectTimeout, // максимальное время до начала удаленной
// передачи
LPTSTR lpszUserName, // пользовательское имя процесса-клиента
DWORD dwMaxUserNameBuff ); // размер буфера для хранения
// пользовательского имени, выраженный
// в количестве символов
Параметр lpdwModes может содержать флаги PIPE_READMODE_MESSAGE и
PIPE_NOWAIT. Если ни один из этих флагов не установлен, применяются байтовый ре-
жим и режим ожидания, задаваемые по умолчанию.
Параметр lpdwInstances позволяет подсчитать текущее количество экземпляров
канала. Иными словами, этот параметр сообщает, сколько раз сервер вызывал функцию
CreateNamedPipe() с одним и тем же именем канала.
Параметры lpcbMaxConnect и lpdwConnectTimeout возвращают ту же информа-
цию о сетевой буферизации, которая задается функцией SetNamedPipeHandleState().
Последние два параметра указанной функции дают серверу возможность полу-
чить информацию о клиенте. Они возвращают завершающиеся нулевым символом стро-
ки, которые идентифицируют пользователя, запустившего приложение-клиента, т.е. имя
пользователя, введенное при регистрации. Это имя связано с определенными конфигу-
рацией системы и привилегиями безопасности. Имя пользователя может понадобиться
серверу для регистрации или отчетности, но скорее всего, этот параметр введен для со-
вместимости с OS/2, где он также используется. Параметр lpszUserName должен иметь
значение NULL, если дескриптор hNamedPipe принадлежит клиенту или, иными слова-
ми, если он был создан функцией CreateFile (а не функцией CreateNamedPipe).
Любому из параметров-указателей может быть присвоено значение NULL,
что даст
возможность проигнорировать значение, которое устанавливается по умолчанию.
Дополнительная информация о канале может быть возвращена и посредством
функции GetNamedPipeInfo(). Данная функция возвращает атрибуты, которые нельзя
183
Два последних параметра используются только для каналов, устанавливающих связь с удаленным компьютером. Они определяют, каким образом система будет управ- лять буферизацией в сети при передаче информации. Эти параметры не влияют на кана- лы, созданные с атрибутом PIPE_FLAG_WRITE_THROUGH, который запрещает буфе- ризацию в сети. Буферизация дает возможность системе комбинировать несколько сообщений и передавать их одновременно, за один сеанс. Причем исходящие сообщения накапливаются в буфере до тех пор, пока не произойдет заполнение буфера или не за- кончится заданный временной интервал. Размер накопительного буфера задается пара- метром lpdwMaxCollect, а значение временного интервала, выраженное в миллисекун- дах, - параметром lpdwCollectDataTimeout. Имеется три функции, позволяющие получить информацию о канале, не изменяя его атрибутов [12]. Первая функция является "двойником" функции SetNamedPipeHandleState(), одна- ко она кроме той информации, которая устанавливается функцией SetNamedPipeHan- dleState(), позволяет получить много дополнительных сведений: BOOL GetNamedPipeHandleState( HANDLE hNamedPipe, // дескриптор именованного канала LPDWORD lpdwModes, // режимы чтения и ожидания LPDWORD lpdwInstances, // количество экземпляров текущего канала LPDWORD lpcbMaxConnect, // максимальное количество байтов, // накапливаемых до начала удаленной передачи LPDWORD lpdwConnectTimeout, // максимальное время до начала удаленной // передачи LPTSTR lpszUserName, // пользовательское имя процесса-клиента DWORD dwMaxUserNameBuff ); // размер буфера для хранения // пользовательского имени, выраженный // в количестве символов Параметр lpdwModes может содержать флаги PIPE_READMODE_MESSAGE и PIPE_NOWAIT. Если ни один из этих флагов не установлен, применяются байтовый ре- жим и режим ожидания, задаваемые по умолчанию. Параметр lpdwInstances позволяет подсчитать текущее количество экземпляров канала. Иными словами, этот параметр сообщает, сколько раз сервер вызывал функцию CreateNamedPipe() с одним и тем же именем канала. Параметры lpcbMaxConnect и lpdwConnectTimeout возвращают ту же информа- цию о сетевой буферизации, которая задается функцией SetNamedPipeHandleState(). Последние два параметра указанной функции дают серверу возможность полу- чить информацию о клиенте. Они возвращают завершающиеся нулевым символом стро- ки, которые идентифицируют пользователя, запустившего приложение-клиента, т.е. имя пользователя, введенное при регистрации. Это имя связано с определенными конфигу- рацией системы и привилегиями безопасности. Имя пользователя может понадобиться серверу для регистрации или отчетности, но скорее всего, этот параметр введен для со- вместимости с OS/2, где он также используется. Параметр lpszUserName должен иметь значение NULL, если дескриптор hNamedPipe принадлежит клиенту или, иными слова- ми, если он был создан функцией CreateFile (а не функцией CreateNamedPipe). Любому из параметров-указателей может быть присвоено значение NULL, что даст возможность проигнорировать значение, которое устанавливается по умолчанию. Дополнительная информация о канале может быть возвращена и посредством функции GetNamedPipeInfo(). Данная функция возвращает атрибуты, которые нельзя 183
Страницы
- « первая
- ‹ предыдущая
- …
- 179
- 180
- 181
- 182
- 183
- …
- следующая ›
- последняя »