.


:




:

































 

 

 

 


,




. 11.1 , . , .

. 11.2. , ( ) , ( ) .

 

11.1. : ,

 
CreateFile CallNamedPipe TransactNamedPipe CreateNamedPipe
\\.\ ( ) \\ \ ( ) \\.\ ( )

11.2. : ,

 
CreateFile CreateMailslot
\\.\ ( ) \\ \ ( ) \\*\ ( , ) \\.\ ( )

: ,

11.4 , ( 11.3), , . , , . 11.3.

- . , , , , ( ). , , .

11.4. SrvrBcst:

static DWORD WINAPI ServerBroadcast(LPLONG pNull) {

MS_MESSAGE MsNotify;

DWORD nXfer;

HANDLE hMsFile;

/* ""*/

while (!ShutDown) { /* , . */

/* , . */

Sleep(CS_TIMEOUT);

hMsFile = CreateFile(MS_CLTNAME, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN EXISTING, FILE ATTRIBUTE NORMAL, NULL);

if (hMsFile == INVALID_HANDLE_VALUE) continue;

/* . */

MsNotify.msStatus = 0;

MsNotify.msUtilization = 0;

_tcscpy(MsNotify.msName, SERVER_PIPE);

if (WriteFile(hMsFile, &MsNotify, MSM_SIZE, &nXfer, NULL)) ReportError(_T(" ."), 13, TRUE);

CloseHandle(hMsFile);

}

_tprintf(_T(" .\n"));

_endthreadex(0);

return 0;

}

11.5 , (. 11.2) .

11.5. LocSrvr:

/* 11. LocSrver.c */

/* , . */

 

#include "EvryThng.h"

#include "ClntSrvr.h" /* . */

 

BOOL LocateServer(LPTSTR pPipeName) {

HANDLE MsFile;

MS_MESSAGE ServerMsg;

BOOL Found = FALSE;

DWORD cbRead;

MsFile = CreateMailslot(MS_SRVNAME, 0, CS_TIMEOUT, NULL);

while (!Found) {

_tprintf(_T(" .\n"));

Found = ReadFile(MsFile, &ServerMsg, MSM_SIZE, &cbRead, NULL);

}

_tprintf(_T(" .\n"));

CloseHandle(MsFile);

/* . */

_tcscpy(pPipeName, ServerMsg.msName);

return TRUE;

}





:


: 2015-09-20; !; : 466 |


:

:

, .
==> ...

1566 - | 1370 -


© 2015-2024 lektsii.org - -

: 0.01 .