Bonjour,
J'utilise la fonction CreateNamedPipe(*name,PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE,1,
4096, 4096, 2000, NULL);
Mais j'ai remarqué que lors que mon prog plante sans avoir quitter correctement je ne peut pas recreer le meme pipe nommé, il faut que je change de nom.
Pouvez vous m'aider a controler la presence du pipe nommé et de le supprimer
Merci
Suggestion pour la création
hPipeInst = CreateNamedPipe(
lpszPipename, // pipe name
PIPE_FLAG_OVERLAPPED |
PIPE_ACCESS_DUPLEX, // read/write access
PIPE_TYPE_MESSAGE | // message type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, 4096, // output buffer size
4096, // input buffer size
2000, // client time-out
NULL);
Pour la suppression en général il s'agit de la problématisue du cilient et non pas du serveur. Pour identifier les clients tu peux utiliser NetFileEnum et pour les forcer à lacher le pipe NetSessionDel
cela donnerait àpeu près ceci:
//A invoquer avant création du pipe par le process serveur
//szPrefix=ton nom de pipe
//bClose flag pour déconnecter le client (à défaut simple comptage
DWORD GetFileSession(char *szPrefix,BOOL bClose)
{
NET_API_STATUS nas;
FILE_INFO_3 *fi3 = NULL;
DWORD prefmaxlen=1024;
DWORD entriesread;
DWORD totalentries;
TCHAR netPrefFile[80];//,netserver[16];
char tmp[80];
MultiByteToWideChar(CP_ACP, 0, szPrefix, -1, netPrefFile, 79);
Rectification faute de frappe dans mon exemple
return C_GetFileSession(szPrefix,FALSE);
il fallait lire return GetFileSession(szPrefix,FALSE);
Ceci pour interrompre l'itération qui est mise à mal après un NetSessionDel bien sur