場景
Windows進(jìn)程單實例運行,如果有進(jìn)程沒有退出,繼續(xù)等待,直到進(jìn)程完全退出,才會進(jìn)入下一個實例
HANDLE pHandle = NULL;
do
{
pHandle = ::CreateMutex(NULL, FALSE, "Global\\fengyuzaitu.blog.51cto.com");
if (ERROR_ALREADY_EXISTS == GetLastError() || ERROR_ACCESS_DENIED == GetLastError())
{
::Sleep(1000);
if (NULL != pHandle) ::CloseHandle(pHandle);
}
else
{
break;
}
} while (1);
10余年建站經(jīng)驗, 網(wǎng)站建設(shè)、做網(wǎng)站客戶的見證與正確選擇。創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細(xì)報價表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
//開始進(jìn)入進(jìn)程服務(wù)代碼
//進(jìn)程結(jié)束,關(guān)閉句柄
if (NULL != pHandle) ::CloseHandle(pHandle);
分析1)“Global\\”前綴代表全局的內(nèi)核對象空間,對任何的登陸會話都有效
翻譯:https://docs.microsoft.com/zh-cn/windows/desktop/TermServ/kernel-object-namespaces
遠(yuǎn)程服務(wù)器為事件,信號量,互斥量,超時定時器,文件映射對象和作業(yè)對象這些命名內(nèi)核對象,創(chuàng)建不同的命名空間。在客戶端/服務(wù)器應(yīng)用程序中存在一個全局的命名空間。此外,在Windows Vista系統(tǒng)中,每一個客戶端會話都會有一個隔離的命名空間來存放這些對象。隔離的客戶端會話空間允許多個客戶運行相同的進(jìn)程實例而互不干擾。對于在客戶端會話啟動的進(jìn)程,系統(tǒng)會在
默認(rèn)的會話空間中創(chuàng)建進(jìn)程。但是,所有的進(jìn)程都共享以"Global\"作為前綴定義的命名空間。例如,下面的代碼通過調(diào)用CreateEvent,在全局命名空間中創(chuàng)建一個叫CSAPP的的事件對象。
代碼
CreateEvent( NULL, FALSE, FALSE, "Global\\CSAPP" );
在遠(yuǎn)程桌面服務(wù)環(huán)境中,服務(wù)程序默認(rèn)采用全局命名空間。會話零只應(yīng)用于宿主服務(wù),沒有控制臺會話。全局命名空間允許進(jìn)程同一個服務(wù)應(yīng)用在不同的用戶會話進(jìn)行通信。例如,一個客戶端/服務(wù)器應(yīng)用可能會為了同步,使用一個互斥對象。服務(wù)斷模塊創(chuàng)建一個全局命名空間的互斥對象。然后客戶端會話可以使用“Global\"前綴打開一個互斥對象。
全局命名空間也可以用在檢測一個使用了命名對象的應(yīng)用是否已經(jīng)啟動,檢測的范圍包括所有的會話。命名對象必須在全局命名空間中創(chuàng)建或者打開,不能是單個會話空間。The more common case of running the application once per session is supported by default because the named object is created in a per session namespace.除了"Global\"前綴,客戶端進(jìn)程可以用"Local\”前綴在會話空間中幾餐對象。關(guān)鍵字大小寫敏感。
分析2)
ERROR_ALREADY_EXISTS == GetLastError()
這個錯誤是在同一個會話中會出現(xiàn)這個錯誤,同一個會話是指同樣的方式啟動,在同一個登陸用戶以控制臺或者服務(wù)啟動
ERROR_ACCESS_DENIED == GetLastError()
這個錯誤是在一個進(jìn)程實例以服務(wù)的形式啟動,一個進(jìn)程實例以控制臺的形式啟動,就會返回這個錯誤
https://docs.microsoft.com/zh-cn/windows/desktop/api/synchapi/nf-synchapi-createmutexa
CreateMutexA說明
標(biāo)題名稱:Windows進(jìn)程單實例運行
文章鏈接:http://www.rwnh.cn/article46/ghcihg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、全網(wǎng)營銷推廣、面包屑導(dǎo)航、定制網(wǎng)站、網(wǎng)站策劃、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)