私はプログラムで作業中で、プロセスのプロセスIDを印刷できません。私はプロセスの名前を正常に取得しましたが、プロセスIDを印刷しています。それはまったく同じです。以下は私のコードです。MASM32 PROCESSENTRY32を使用してプロセスIDを印刷する方法
include \masm32\include\masm32rt.inc
.data
cFmt db "%d",0
cfr db 1024 dup(?)
.code
ProcessSearch proc
LOCAL sHndl :DWORD
push 0
push TH32CS_SNAPPROCESS
call CreateToolhelp32Snapshot
mov sHndl, eax
mov pData.dwSize, sizeof pData
push offset pData
push sHndl
call Process32First
push offset pData
push sHndl
call Process32Next
process:
push offset pData.th32ProcessID
push offset cFmt
push offset cfr
call wsprintf
push offset cfr
call StdOut
push offset pData
push sHndl
call Process32Next
cmp eax, 0
jg process
push sHndl
call CloseHandle
ret
ProcessSearch endp
start:
call ProcessSearch
call ExitProcess
end start
なぜプロセスIDを印刷できないのか分かりません。
私たちが望む場合でも、[mcve]を表していないため、このコードをデバッグできませんでした。 'cFmt'と' cfr'とは何ですか?それはまた何が意味するのか明確ではありません*「それはすべて同じものを示しています」*デバッガを使ってコードをステップ実行して、どこが迷子になっているのか見てきましたか? Visual Studioには優れたデバッガが含まれています。または、WinDbgにはSDKと共に無料で含まれています。 MASM32にデバッガが付属しているかどうかは不明です。それはおそらく、あなたは1つなしでアセンブリの開発を行うことはできません! –
あなたはmasmを使っているので、 'push/call'の代わりに' invoke'を使わないのはなぜですか?それは、コードを単純化するでしょう。 – Michael
私はcFmtとcfrのrepsective値でコードを更新しました。私は、呼び出しがどのようにして自分のコードを単純化できるかをよく知っています。しかし、私はこの種のコーディングスタイルを基本に練習する必要がありました。 – Pentagon