[英]GetProcessIdOfThread without “windows.h”
我需要手動設置線程的優先級,並使用GetProcessIdOfThread
。 不幸的是,第3方庫要求我將代碼構建為Use MFC in a Shared DLL
以便可以將afx.h
用於某些dll欺騙。
沒有windows.h
情況下如何使用GetProcessIdOfThread
函數?
我試圖包括WinBase.h
但這會拋出很多廢話,編譯錯誤。
只要您的下游鏈接器設置正確,您就可以簡單地將函數聲明添加到您選擇的項目頭文件中。
這是WinBase.h
的原始聲明:
WINBASEAPI DWORD WINAPI GetProcessIdOfThread(HANDLE Thread);
如果您不包括Windows.h
,那么您將沒有該特定聲明所需的大多數已使用預處理器宏/定義。 如果要針對CRT的靜態庫版本進行鏈接,則這是等效的定義:
unsigned long __stdcall GetProcessIdOfThread(void *Thread);
如果要針對CRT的DLL版本進行鏈接,則需要在聲明前加上__declspec(dllimport)
:
__declspec(dllimport) unsigned long __stdcall GetProcessIdOfThread(void *Thread);
我可以通過將包裝函數放在單獨的.c(pp)文件中來解決此問題:
#include <windows.h>
DWORD GetPidFromThread(HANDLE thread)
{
return GetProcessIdOfThread(thread);
}
您可能仍然需要用某些類型的DWORD
和HANDLE
替換它們,這些類型也可以在其他文件中使用[並且使用GetPidFromThread
的原型制作頭文件,但是至少可以合理地安全地隔離這些位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.