相关疑难解决方法(0)

cplusplus.com有什么问题?

对于这个问题,这可能不是一个非常合适的论坛,但是让我试一试,冒着被搬走的风险.

C++标准库有几个参考,包括非常有价值的ISO标准,MSDN,IBM,cppreferencecplusplus.就个人而言,在编写C++时,我需要一个具有快速随机访问,短加载时间和使用示例的引用,并且我一直在发现cplusplus.com非常有用.但是,我一直在SO上听到关于该网站的负面看法,所以我想具体说明:

cplusplus.com提供的错误,误解或错误建议有哪些?使用它来做出编码决策有哪些风险?

让我补充一点:我希望能够通过标准的准确报价在这里回答问题,因此我想发布可立即使用的链接,而cplusplus.com将是我选择的网站,如果不是这个问题.

c++

192
推荐指数
4
解决办法
2万
查看次数

某些页面上的ReadProcessMemory失败(GetLastError()= 299)

我尝试读取进程的所有提交页面(Win7-64).在大多数页面上它可以工作,但几页失败.我无法解释原因.这是我的测试程序(编译x32,在Win7-64中测试):

#include <windows.h>

void main()
{
    HANDLE hProc = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION,FALSE,GetCurrentProcessId());

    SYSTEM_INFO si;
    ZeroMemory(&si,sizeof(SYSTEM_INFO));
    GetSystemInfo(&si);

    char* buf = new char[si.dwPageSize];

    for (unsigned i = 0; i < 0x7fff0; i++)
    {
        void* baseOffs = (void*) (i * si.dwPageSize);
        MEMORY_BASIC_INFORMATION mbi;
        ZeroMemory(&mbi,sizeof(MEMORY_BASIC_INFORMATION));

        if (VirtualQueryEx(hProc, baseOffs, &mbi, sizeof(MEMORY_BASIC_INFORMATION)) == 0)
        {
            MessageBox(NULL, TEXT("VirtualQueryEx failed"),TEXT(""),MB_OK);
        }

        if (mbi.State == MEM_COMMIT)
        {
            SIZE_T numByteWritten = 0;
            if(ReadProcessMemory(hProc, baseOffs,buf,si.dwPageSize,&numByteWritten) == FALSE)
                OutputDebugString(TEXT("bad\n")); //GetLastError()==ERROR_PARTIALLY_READ; numByteWritten == 0;
            else
                OutputDebugString(TEXT("good\n"));

        }
    }

    delete[] buf;
}
Run Code Online (Sandbox Code Playgroud)

我厌倦了查看失败页面的MEMORY_BASIC_INFORMATION,但我没有发现任何奇怪的东西.失败页面的数量也因运行而异(平均约为5).什么阻止我阅读这些页面?我是否需要调整进程令牌中的某些权限?

winapi readprocessmemory windows-7 kernel32

4
推荐指数
1
解决办法
4625
查看次数

标签 统计

c++ ×1

kernel32 ×1

readprocessmemory ×1

winapi ×1

windows-7 ×1