1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| cbDialogMemory = GlobalSize( hDialogMemory);
CallerhFileMem = CreateFileMapping( (HANDLE)0xFFFFFFFF,
NULL,
PAGE_READWRITE,
0L,
cbDialogMemory,
NULL);
if ( CallerhFileMem == NULL)
{
return( G_ERRLOG);
}
/* allocation des handle de process */
ServerhProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, ServerPID);
if ( ServerhProcess == NULL)
{
CloseHandle( CallerhFileMem);
return( G_ERRLOG);
}
CallerhProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, CallerPID);
if ( CallerhProcess == NULL)
{
CloseHandle( CallerhFileMem);
CloseHandle( ServerhProcess);
return( G_ERRLOG);
}
/* creation du handle pour le serveur */
if ( !DuplicateHandle( CallerhProcess,
CallerhFileMem,
ServerhProcess,
&ServerhFileMem,
0,
FALSE,
DUPLICATE_SAME_ACCESS) )
{
TCHAR szBuffer[20];
DWORD error = GetLastError();
StringCbPrintf(szBuffer, sizeof(szBuffer), TEXT("Erreur n°%u"), error);
TCHAR szErreur[80];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, 0,
szErreur, 80, NULL
);
MessageBox(NULL, szErreur, szBuffer, MB_OK | MB_ICONERROR);
CloseHandle( CallerhFileMem);
CloseHandle( ServerhProcess);
CloseHandle( CallerhProcess);
return( G_ERRLOG);
} |
Partager