[英]C Programming- FindFirstFile returning Invalid_handle_value
[英]Windows handle always returning INVALID_HANDLE_VALUE
HANDLE process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, PID);
if (process = INVALID_HANDLE_VALUE)
{
printf("Failed to open PID %d, error code %d",
PID, GetLastError());
}
我試過這個函數,但它總是返回"Failed to open PID (number) error code 0" 。 即使只有PROCESS_VM_READ 。
當我在這段代碼中輸出內存地址的值時
ReadProcessMemory(process, (LPVOID)0x14AC1BC, &value, sizeof(DWORD), NULL);
cout << value << endl;
它返回垃圾值。
OpenProcess 失敗時返回NULL
而不是INVALID_HANDLE_VALUE
。 當您應該使用==
時,您也在使用=
。 代碼應該是
HANDLE process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, PID);
if (process == NULL)
{
}
process = INVALID_HANDLE_VALUE
執行賦值覆蓋進程句柄值,而不是比較。 同樣,如果出現錯誤OpenProcess
將返回NULL
。 像這樣重寫檢查:
if(NULL == process)
您錯誤地兩次分配給process
變量。 一次當您調用OpenProcess
,然后在您編寫時再次
if (process = INVALID_HANDLE_VALUE)
這會將INVALID_HANDLE_VALUE
分配給process
並測試process
是否為非零。 情況總是如此,因為INVALID_HANDLE_VALUE
非零。 當您打算使用==
時,您犯了使用=
的經典錯誤。 因此,您完全忽略了OpenProcess
返回的值。
請注意, OpenProcess
通過返回NULL
指示失敗。 所以你的代碼應該是
if (process == NULL)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.