翻譯自msdn,是好多年前我發布在好網部落格上的,現在把它轉過來
編寫服務程式的main函式
服務程式的main函式呼叫startservicectrldispatcher函式,將它與scm(服務控制管理器)聯絡起來,並開啟乙個控制排程執行緒。控制排程執行緒不停的迴圈,等待接收在排程表中已經定義好的控制請求。除非程式中的所有服務都中止或者遇到錯誤,要不這個執行緒不會返回。當程式中的所有服務都中止的時候,scm給排程執行緒傳送乙個控制請求,讓它關閉。這時,執行緒從呼叫startservicectrldispatcher函式的地方返回,程式中止。
下面,是乙個只支援乙個服務的程式。svcdebugout函式負責向偵錯程式輸出指示資訊和錯誤。它有兩個引數:乙個格式化的輸出字串,和這個字串的長度值。
#include
service_status myservicestatus;
service_status_handle myservicestatushandle;
void svcdebugout(lpstr string, dword status);
void winapi myservicectrlhandler (dword opcode);
void myservicestart (dword argc, lptstr *argv);
dword myserviceinitialization (dword argc, lptstr *argv,
dword *specificerror);
void main( )
service_table_entry dispatchtable =
,if (!startservicectrldispatcher( dispatchtable))
svcdebugout(" [my_service] startservicectrldispatcher (%d) ",
getlasterror());
void svcdebugout(lpstr string, dword status)
char buffer[1024];
if (strlen(string) < 1000)
sprintf(buffer, string, status);
outputdebugstringa(buffer);
如果想要服務程式支援多服務,main函式的實現會有一些同。將所有服務的名稱都按照"myservice"的格式加入到排程表中,使他們可以被排程執行緒監視
VC Service程式設計(八)多執行緒服務
scm 服務控制管理器 向服務的控制處理器傳送服務控制事件來控制乙個服務。服務必須在短時間內響應控制請求,使得scm可以明確服務的當前狀態。還有,服務的當前狀態必須和它向scm報告的狀態相一致。由於服務和scm之間的這種通訊機制,使用多執行緒服務必須小心。當從scm那裡收到停止指示,在向scm報告服...
matlab 程式設計 m檔案
功能 命令列簡單疊加,matlab按照順序執行,解決使用者在命令視窗執行許多命令,避免使用者做許多重複性工作。注意 變數為全域性變數 功能 實現計算中引數傳遞和函式呼叫。注意 1 變數為區域性變數 2 檔名 與 函式名 一一對應。3 函式的輸入引數與輸出引數 a 函式有返回引數和輸入引數。例如 傳給...
編寫人生?一生程式設計?
不懂得也不知道為什麼選擇這個專業!不能明白也不理解自己當初的選擇!每天都在看著電腦螢幕不時地會發呆,不知道自己在做什麼?懂得了多少東西?從未接觸過的新的知識,留給自己的只有懵懂,懵懂的我不知道該何去何從?停下來靜靜地想一想,我的未來。我也不知道該幹什麼?如今激烈的競爭崗位,ios 系統的飽和,and...