Função CreatePipe (namedpipeapi.h)
Cria um pipe anônimo e retorna identificadores para as extremidades de leitura e gravação do pipe.
Sintaxe
BOOL CreatePipe(
[out] PHANDLE hReadPipe,
[out] PHANDLE hWritePipe,
[in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
[in] DWORD nSize
);
Parâmetros
[out] hReadPipe
Um ponteiro para uma variável que recebe o identificador de leitura do pipe.
[out] hWritePipe
Um ponteiro para uma variável que recebe o identificador de gravação do pipe.
[in, optional] lpPipeAttributes
Um ponteiro para uma estrutura de SECURITY_ATTRIBUTES que determina se o identificador retornado pode ser herdado por processos filho. Se lpPipeAttributes for NULL, o identificador não poderá ser herdado.
O lpSecurityDescriptor membro da estrutura especifica um descritor de segurança para o novo pipe. Se lpPipeAttributes for NULL, o pipe receberá um descritor de segurança padrão. As ACLs no descritor de segurança padrão para um pipe vêm do token primário ou de representação do criador.
[in] nSize
O tamanho do buffer para o pipe, em bytes. O tamanho é apenas uma sugestão; o sistema usa o valor para calcular um mecanismo de buffer apropriado. Se esse parâmetro for zero, o sistema usará o tamanho do buffer padrão.
Valor de retorno
Se a função for bem-sucedida, o valor retornado não será zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Observações
CreatePipe cria o pipe, atribuindo o tamanho do pipe especificado ao buffer de armazenamento.
Para ler do pipe, um processo usa o identificador de leitura em uma chamada para a função
Quando um processo usa WriteFile para gravar em um pipe anônimo, a operação de gravação não é concluída até que todos os bytes sejam gravados. Se o buffer de pipe estiver cheio antes de todos os bytes serem gravados, WriteFile não retornará até que outro processo ou thread use ReadFile para disponibilizar mais espaço de buffer.
Pipes anônimos são implementados usando um pipe nomeado com um nome exclusivo. Portanto, muitas vezes você pode passar um identificador para um pipe anônimo para uma função que requer um identificador para um pipe nomeado.
Se CreatePipe falhar, o conteúdo dos parâmetros de saída será indeterminado. Nenhuma suposição deve ser feita sobre seu conteúdo neste evento.
Para liberar recursos usados por um pipe, o aplicativo sempre deve fechar identificadores quando não forem mais necessários, o que é feito chamando a função CloseHandle ou quando o processo associado à instância for encerrado. Observe que uma instância de um pipe pode ter mais de um identificador associado a ele. Uma instância de um pipe é sempre excluída quando o último identificador para a instância do pipe nomeado é fechado.
Exemplos
Para obter um exemplo, consulte Criando um processo filho comde entrada e saída redirecionados.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | namedpipeapi.h |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |
Consulte também
Visão geral do Pipes