Функция GetNamedPipeHandleStateA (winbase.h)
Извлекает сведения об указанном именованном канале. Возвращаемые сведения могут отличаться в течение времени существования экземпляра именованного канала.
Синтаксис
BOOL GetNamedPipeHandleStateA(
[in] HANDLE hNamedPipe,
[out, optional] LPDWORD lpState,
[out, optional] LPDWORD lpCurInstances,
[out, optional] LPDWORD lpMaxCollectionCount,
[out, optional] LPDWORD lpCollectDataTimeout,
[out, optional] LPSTR lpUserName,
[in] DWORD nMaxUserNameSize
);
Параметры
[in] hNamedPipe
Дескриптор именованного канала, для которого требуются сведения. Дескриптор должен иметь GENERIC_READ доступ к каналу только для чтения или чтения и записи либо должен иметь доступ к GENERIC_WRITE и FILE_READ_ATTRIBUTES для канала только для записи.
Этот параметр также может быть дескриптором для анонимного канала, возвращаемого функцией CreatePipe .
[out, optional] lpState
Указатель на переменную, указывающую текущее состояние дескриптора. Этот параметр может иметь значение NULL , если эти сведения не требуются. Можно указать одно или оба из следующих значений.
[out, optional] lpCurInstances
Указатель на переменную, получающую количество экземпляров текущего канала. Этот параметр может иметь значение NULL, если эти сведения не требуются.
[out, optional] lpMaxCollectionCount
Указатель на переменную, которая получает максимальное количество байтов, собираемых на клиентском компьютере перед передачей на сервер. Этот параметр должен иметь значение NULL , если указанный дескриптор канала находится на сервере именованного канала или если клиентские и серверные процессы находятся на одном компьютере. Этот параметр может иметь значение NULL, если эти сведения не требуются.
[out, optional] lpCollectDataTimeout
Указатель на переменную, получающую максимальное время (в миллисекундах), которое может пройти, прежде чем удаленный именованный канал передает информацию по сети. Этот параметр должен иметь значение NULL , если указанный дескриптор канала находится на сервере именованного канала или если клиентские и серверные процессы находятся на одном компьютере. Этот параметр может иметь значение NULL, если эти сведения не требуются.
[out, optional] lpUserName
Указатель на буфер, получающий строку имени пользователя, связанную с клиентским приложением. Сервер может получить эти сведения, только если клиент открыл канал с SECURITY_IMPERSONATION доступом.
Этот параметр должен иметь значение NULL , если указанный дескриптор канала находится в клиентском конце именованного канала. Этот параметр может иметь значение NULL, если эти сведения не требуются.
[in] nMaxUserNameSize
Размер буфера, заданного параметром lpUserName в TCHARs. Этот параметр игнорируется, если lpUserName имеет значение NULL.
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Функция GetNamedPipeHandleState возвращает успешно, даже если все переданные ей указатели имеют значение NULL.
Чтобы задать состояние дескриптора канала, используйте функцию SetNamedPipeHandleState .
Windows 10 версии 1709: каналы поддерживаются только в контейнере приложений, т. е. от одного процесса UWP к другому процессу UWP, который является частью того же приложения. Кроме того, именованные каналы должны использовать синтаксис \\.\pipe\LOCAL\
для имени канала.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |