CreateMsgQueue主要用於創建點對點訊息佇列。
基本介紹
定義,性質,返回值,
定義
CreateMsgQueue 創建訊息佇列
函式原型
HANDLE CreateMsgQueue(
LPCWSTRlpszName,//佇列的名稱
LPMSGQUEUEOPTIONS lpOptions//指向一個MSGQUEUEOPTIONS
);
性質
使用原因:因為在進程間的通訊時,一般採用的方法,可以使用SendMessage/PostMessage ,但是這兩種方式接收訊息,是由訊息循環接收的,而且還需要傳送目標的一個進程句柄。在有些情況不滿足的情況下,導致這種方式使用起來比較麻煩。可以使用CreateMsgQueue 創建一個點對點的訊息佇列,然後使用WriteMsgQueue 將你需要傳送的數據寫入到訊息佇列,獲取方則通過 ReadMsgQueue 從訊息佇列讀取由WriteMsgQueue寫入的數據。
返回值
返回一個唯讀或只寫的句柄表示佇列成功。
如果返回的是唯讀句柄,當有數據放入佇列中,佇列置為有信號狀態,該信號在ReadMsgQueue函式中被重置為無信號狀態,如果返回的是只寫句柄,當佇列未滿時,佇列置為有信號狀態,如果在這個函式調用之前,指定的佇列就已存在,該函式將創建一個新的句柄指向該對列。如果該佇列已經存在,即使該函式執行成功,調用GetLastError函式也將返回ERROR_ALREADY_EXISTS;如果該訊息佇列在創建之前不存在,調用GetLastError函式返回ERROR_SUCCESS。
如果返回的是唯讀句柄,當有數據放入佇列中,佇列置為有信號狀態,該信號在ReadMsgQueue函式中被重置為無信號狀態,如果返回的是只寫句柄,當佇列未滿時,佇列置為有信號狀態,如果在這個函式調用之前,指定的佇列就已存在,該函式將創建一個新的句柄指向該對列。如果該佇列已經存在,即使該函式執行成功,調用GetLastError函式也將返回ERROR_ALREADY_EXISTS;如果該訊息佇列在創建之前不存在,調用GetLastError函式返回ERROR_SUCCESS。
返回NULL,表示失敗。為了獲得更多的錯誤信息,請調用GetLastError函式。