Fórum Chamadas NamedPipe #239656
25/06/2004
0
Olá,
Estou executando uma chamada a um namedpipe esta funcionado blz.
O problema está qdo mando uma mensagem atraves do WriteFile ele está retornando true, porem a mensagem não executa o que deveria e qdo uso o debug (de outro aplicativo que gerencia todas chamdas) verifico que está ficando retornando como timeout.
Segue as linhas de codigo...
Alguem tem alguma sugestão?
Obrigada.
hPipe := CreateFile(
pchar(´\\..\pipe\nomepipe´), // pipe name
GENERIC_WRITE, // read and write access GENERIC_READ or
0, // no sharing
nil, // no security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
0); // no template file
FActive := not (hPipe= INVALID_HANDLE_VALUE);
if (GetLastError = ERROR_PIPE_BUSY) then
begin
if (not WaitNamedPipe(pchar(´\\..\pipe\nomepipe´), 20000) ) then
raise Exception.Create(´Named Pipe Server is Busy´)
end
else
if Not FActive then
RaiseLastOSError;
dwMode := PIPE_READMODE_MESSAGE;
if not SetNamedPipeHandleState(
hPipe, // pipe handle
dwMode, // new pipe mode
nil, // don´t set maximum bytes
nil) // don´t set maximum time
then
begin
DisconnectNamedPipe(hPipe);
raise Exception.Create(´Unable to change to Message Read Mode´);
end;
sConteudo := ´Mensagem p/ a pipe´;
fSuccess := WriteFile(hPipe,
sConteudo,
length(sConteudo),
dwWritten,
nil);
Estou executando uma chamada a um namedpipe esta funcionado blz.
O problema está qdo mando uma mensagem atraves do WriteFile ele está retornando true, porem a mensagem não executa o que deveria e qdo uso o debug (de outro aplicativo que gerencia todas chamdas) verifico que está ficando retornando como timeout.
Segue as linhas de codigo...
Alguem tem alguma sugestão?
Obrigada.
hPipe := CreateFile(
pchar(´\\..\pipe\nomepipe´), // pipe name
GENERIC_WRITE, // read and write access GENERIC_READ or
0, // no sharing
nil, // no security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
0); // no template file
FActive := not (hPipe= INVALID_HANDLE_VALUE);
if (GetLastError = ERROR_PIPE_BUSY) then
begin
if (not WaitNamedPipe(pchar(´\\..\pipe\nomepipe´), 20000) ) then
raise Exception.Create(´Named Pipe Server is Busy´)
end
else
if Not FActive then
RaiseLastOSError;
dwMode := PIPE_READMODE_MESSAGE;
if not SetNamedPipeHandleState(
hPipe, // pipe handle
dwMode, // new pipe mode
nil, // don´t set maximum bytes
nil) // don´t set maximum time
then
begin
DisconnectNamedPipe(hPipe);
raise Exception.Create(´Unable to change to Message Read Mode´);
end;
sConteudo := ´Mensagem p/ a pipe´;
fSuccess := WriteFile(hPipe,
sConteudo,
length(sConteudo),
dwWritten,
nil);
Hss
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)