C ++内联asm在32位寄存器中移动WCHAR

问题描述

我正在尝试在C ++中实践内联ASM :)也许已经过时了,但是很有趣,知道cpu如何执行代码

因此,我在这里试图做的是遍历进程并获得所需的句柄:)我正在使用tlhelp32

中已创建的方法

我有代码

        HANDLE RetHandle = nullptr,snap;
        int SizeOfPE = sizeof(PROCESSENTRY32),pid; PROCESSENTRY32 pe;
        int PA = PROCESS_ALL_ACCESS;
        const char* Pname = "explorer.exe";
        __asm
        {
            mov eax,pe
            mov ebx,this
            mov ecx,[ebx]pe.dwSize
            mov ecx,SizeOfPE
            mov[ebx]pe.dwSize,ecx

            mov eax,PA
            mov ebx,0
            call Createtoolhelp32Snapshot
            mov eax,snap

            label1:
            mov eax,snap
            mov ebx,[pe]
            call Process32First
            cmp eax,1
            jne exitLabel

            Process32NextLoop:
            mov eax,[pe]
            call Process32Next
            cmp eax,1
            jne Process32NextLoop

            mov edx,pe
            mov ecx,[edx].szExeFile
            cmp ecx,Pname
            je ExitLoop
            jne Process32NextLoop

            ExitLoop:
            mov eax,[ebx].th32ProcessID
            mov pid,eax

            ExitLabel:
            ret
        }

显然,它也在th32ProcessID中引发错误,但是,它只是常规的int

一直在搜索,但是在C ++中找不到与movl等效的内容

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)