0

したがって、システム内の現在のプロセスのリストを取得し、それらを PID および PPID と一緒に共有メモリに書き込む必要がある最初のプロセス (process1.cpp) があります。

addr = (LPTSTR)MapViewOfFile(hMapFile,
    FILE_MAP_ALL_ACCESS,
    0,
    0,
    256);

そして、私は次のように書いています。

int j = 0;
do
    {
        if (pe32.cntThreads < 3)
        {
            char currentProcessExeName = (char)pe32.szExeFile;
            char currentProcessID = (char)pe32.th32ProcessID;
            char currentProcessParentID = (char)pe32.th32ParentProcessID;

            addr = (LPCTSTR)currentProcessExeName;
            addr = (LPCTSTR)currentProcessID;
            addr = (LPCTSTR)currentProcessParentID;

            j = j + 3;
        }
    } while (Process32Next(hProcessSnap, &pe32));

次に、2 番目のプロセス (process2.cpp) で、その配列を読み取ります。問題は、「メモリを読み取れません」というエラーまたは null 値が表示されることです。

ここに画像の説明を入力

2番目のプロセスで読み取りを行う方法は次のとおりです。

    addr = (LPTSTR)MapViewOfFile(hMapFile,
            FILE_MAP_ALL_ACCESS,
            0,
            0,
            BUF_SIZE);

if (addr == NULL)
{
    _tprintf(TEXT("Could not map view of file (%d).\n"), GetLastError());
    CloseHandle(hMapFile);

    return 1;
}


for (int i = 0; i < sizeof(addr); i = i + 3)
{
    printf("\nProcess: %S [%d] [%d] \n", addr[i], addr[i + 1], addr[i + 2]);
}

これに対する修正はありますか?

PS: ページをロードしすぎないように、できるだけ少ないコードを投稿しました。必要に応じて、さらに投稿します。

4

0 に答える 0