Je souhaite lire les informations d'état fournies par une application via la mémoire partagée. Je veux utiliser C++ afin de lire le contenu de cette mémoire partagée nommée, puis l'appeler avec pinvoke d'une classe C#.C++ Lecture à partir de la mémoire partagée
À partir du logiciel, je sais qu'il a une certaine structure de fichier: Une structure STATUS_DATA
avec un tableau de quatre structures de SYSTEM_CHARACTERISTICS
. Je ne suis pas (encore) familier avec C++, donc j'ai essayé de suivre msdn fondamentalement. Pour trouver la taille du fichier à mapper, j'ai ajouté les tailles des membres de la structure comme à voir dans le code ci-dessous. Il en résulte un ACCÈS REFUSÉ, donc j'ai pensé, que le résultat basé sur les structures est trop élevé. Quand j'utilise sizeof(STATUS_DATA)
(j'ai ajouté la structure à ma source), il finit toujours dans un ACCÈS REFUSÉ. Si j'essaie quelque chose de plus bas, comme 1024 octets, la seule chose que je peux voir dans pbuf
est un <
, pendant le débogage.
C'est ce que je suis arrivé à ce jour:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <iostream>
#pragma comment(lib, "user32.lib")
using namespace std;
signed int BUF_SIZE = 4 * (10368 + 16 + 4 + 16 + 4 + 16 + 4 + 1 + 4); // sizeof(STATUS_DATA);
TCHAR szName[]=TEXT("ENGINE_STATUS");
int main()
{
HANDLE hMapFile;
unsigned char* pBuf;
hMapFile = OpenFileMapping(
FILE_MAP_READ, // read access
FALSE, // do not inherit the name
szName); // name of mapping object
if (hMapFile == NULL)
{
_tprintf(TEXT("Could not open file mapping object (%d).\n"),
GetLastError());
return 1;
}
pBuf = (unsigned char*) MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_READ, // read/write permission
0,
0,
BUF_SIZE); // 1024);
if (pBuf == NULL)
{
_tprintf(TEXT("Could not map view of file (%d).\n"),
GetLastError());
CloseHandle(hMapFile);
return 1;
}
UnmapViewOfFile(pBuf);
CloseHandle(hMapFile);
return 0;
}
J'ai aussi assuré que ce Mem partagé « est là » en suivant que hint. Quelqu'un peut-il me donner un indice, qu'est-ce qui me manque? Merci!
C'est, je vous remercie! – rdoubleui