Função CallNamedPipeA (winbase.h)
Conecta-se a um pipe do tipo mensagem (e aguarda se uma instância do pipe não está disponível), grava e lê do pipe e fecha o pipe.
Sintaxe
BOOL CallNamedPipeA(
[in] LPCSTR lpNamedPipeName,
[in] LPVOID lpInBuffer,
[in] DWORD nInBufferSize,
[out] LPVOID lpOutBuffer,
[in] DWORD nOutBufferSize,
[out] LPDWORD lpBytesRead,
[in] DWORD nTimeOut
);
Parâmetros
[in] lpNamedPipeName
O nome do pipe.
[in] lpInBuffer
Os dados a serem gravados no pipe.
[in] nInBufferSize
O tamanho do buffer de gravação, em bytes.
[out] lpOutBuffer
Um ponteiro para o buffer que recebe os dados lidos do pipe.
[in] nOutBufferSize
O tamanho do buffer de leitura, em bytes.
[out] lpBytesRead
Um ponteiro para uma variável que recebe o número de bytes lidos do pipe.
[in] nTimeOut
O número de milissegundos a aguardar até que o pipe nomeado esteja disponível. Além dos valores numéricos, os valores especiais a seguir podem ser especificados.
Valor | Significado |
---|---|
|
Não aguarda o pipe nomeado. Se o pipe nomeado não estiver disponível, a função retornará um erro. |
|
Espera indefinidamente. |
|
Usa o tempo limite padrão especificado em uma chamada para a função CreateNamedPipe . |
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Se a mensagem gravada no pipe pelo processo do servidor for maior que nOutBufferSize, CallNamedPipe retornará FALSE e GetLastError retornará ERROR_MORE_DATA. O restante da mensagem é descartado porque CallNamedPipe fecha o identificador do pipe antes de retornar.
Comentários
Chamar CallNamedPipe é equivalente a chamar as funções CreateFile (ou WaitNamedPipe, se CreateFile não puder abrir o pipe imediatamente), TransactNamedPipe e CloseHandle . CreateFile é chamado com um sinalizador de acesso de GENERIC_READ | GENERIC_WRITE e um sinalizador de identificador herdado de FALSE.
CallNamedPipe falhará se o pipe for um pipe do tipo byte.
Windows 10, versão 1709: os pipes só têm suporte em um app-container; ou seja, de um processo UWP para outro processo UWP que faz parte do mesmo aplicativo. Além disso, os pipes nomeados devem usar a sintaxe \\.\pipe\LOCAL\
para o nome do pipe.
Exemplos
Para obter um exemplo, consulte Transações em pipes nomeados.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |