节点加载项无法快照(CreateToolhelp32Snapshot)模块 我正在学习C++,但是不太明白为什么当我试图通过节点附加模块来快照模块时,当我在桌面上通过VS运行程序时,返回的结果会不同。

节点加载项无法快照(CreateToolhelp32Snapshot)模块 我正在学习C++,但是不太明白为什么当我试图通过节点附加模块来快照模块时,当我在桌面上通过VS运行程序时,返回的结果会不同。,c++,node.js,v8,libv8,C++,Node.js,V8,Libv8,使用MSDN中的源代码,我可以列出流程中的所有模块: void fm(LPSTR name) { HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 5844); MODULEENTRY32 mEntry; // check invalid handle value... // check module32first... mEntry.dwSize = sizeof

使用MSDN中的源代码,我可以列出流程中的所有模块:

void fm(LPSTR name) {
    HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 5844);
    MODULEENTRY32 mEntry;

    // check invalid handle value...
    // check module32first...

    mEntry.dwSize = sizeof(mEntry);

    do {
        if (!strcmp(mEntry.szModule, name)) {
            CloseHandle(hModuleSnapshot);
            cout << mEntry.szModule << endl;
        }
    } while (Module32Next(hModuleSnapshot, &mEntry));
}
void fm(LPSTR名称){
HANDLE hModuleSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,5844);
模块TRY32-mEntry;
//检查无效的句柄值。。。
//首先检查模块32。。。
mEntry.dwSize=sizeof(mEntry);
做{
if(!strcmp(mEntry.szModule,name)){
CloseHandle(hModuleSnapshot);

如果在x86进程上的x64进程(Node.exe)中使用
TH32CS\u SNAPMODULE
将只提供64位模块,那么在x64进程(Node.exe)中使用
TH32CS\u SNAPMODULE32
将获得32位模块-
TH32CS\u SNAPMODULE32

在x86上,进程将只为您提供64位模块,使用
TH32CS\u SNAPMODULE32
为所有模块获取32位模块-
TH32CS\u SNAPMODULE32

为什么您使用
do…while
而不是
while
?没有理由,为什么在
do while
上使用
while
呢?我没有完全理解理解。您可能在
//check…
部分中初始化
mEntry
//check
中的Module32First看起来像
if(!Module32First(hModuleSnapshot,&mEntry))…throw error
节点正在x64中运行,您试图打开的进程是prob x86。为什么您使用
do…while
而不是
while
?没有原因,为什么要在
do while
上使用
while
?我还没有完全理解。您可能在
//检查…
部分中初始化
mEntry
ns.
//check
中的Module32First看起来像
如果(!Module32First(hModuleSnapshot,&mEntry))…throw error
节点在x64中运行,并且您尝试打开的进程是prob x86。
void fm() { 
    HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 5844);
    MODULEENTRY32 mEntry;

    // check invalid handle value...
    // check module32first...

    mEntry.dwSize = sizeof(mEntry);

    do {
        cout << mEntry.szModule << endl;
    } while (Module32Next(hModuleSnapshot, &mEntry));

    CloseHandle(hModuleSnapshot);
}