簡體   English   中英

沒有“ windows.h”的GetProcessIdOfThread

[英]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);
 }

您可能仍然需要用某些類型的DWORDHANDLE替換它們,這些類型也可以在其他文件中使用[並且使用GetPidFromThread的原型制作頭文件,但是至少可以合理地安全地隔離這些位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM