hPipe = CreateNamedPipe(
lpszPipename, // nom du pipe
PIPE_ACCESS_DUPLEX, // accès lecture/écriture
PIPE_TYPE_MESSAGE | // type de pipe message
PIPE_READMODE_MESSAGE | // mode lecture de message
PIPE_WAIT, // mode bloquant
PIPE_UNLIMITED_INSTANCES, // instances max.
100, // taille du tampon de sortie
100, // taille du tampon d'entrée
0, // délai d'attente client
NULL); // attribut de sécurité par défaut
DWORD totalBytesAvailable;
PeekNamedPipe(
hPipe , // __in HANDLE hNamedPipe,
NULL, // __out_opt LPVOID lpBuffer,
0, // __in DWORD nBufferSize,
NULL, // __out_opt LPDWORD lpBytesRead,
&totalBytesAvailable, // __out_opt LPDWORD lpTotalBytesAvail,
NULL // __out_opt LPDWORD lpBytesLeftThisMessage
);
if(totalBytesAvailable permet)
WriteFile( tmp_pipe, pBuffer, BufferLen, &dwWritten, NULL );
Comme vous pouvez le voir, j'ai utilisé PeekNamedPipe
pour obtenir l'espace disponible, mais il s'avère que totalBytesAvailable
est toujours 0
, comment faire correctement ?