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


Функция 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 , если эти сведения не требуются. Можно указать одно или оба из следующих значений.

Значение Значение
PIPE_NOWAIT
0x00000001
Дескриптор канала находится в режиме неблокировки. Если этот флаг не указан, дескриптор канала находится в режиме блокировки.
PIPE_READMODE_MESSAGE
0x00000002
Дескриптор канала находится в режиме чтения сообщений. Если этот флаг не указан, дескриптор канала находится в режиме байтового чтения.

[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

См. также

Функции канала

Обзор каналов

SetNamedPipeHandleState