成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

點對點消息隊列函數:用于WinCE的IPC機制

開發
本文以一個易于了解的方式描述點對點消息隊列函數。這是個IPC機制,它高效、靈活,并且專用于 Windows CE 4.0 及其更高版本。

本文說明點對點消息隊列 — 一個鮮為人知的 IPC 機制,它高效、靈活,并且專用于 Windows CE 4.0 及其更高版本。此外,本文還說明如何設計和使用托管包裝,使 .NET Compact Framework 應用程序中的 IPC 極其簡便。

開發人員能夠以多種方式使用點對點消息隊列。開發人員通常在無法宿主 .NET Compact Framework 運行庫的情況下使用 IPC 作為替代方案(本機進程通過 IPC 與托管進程進行通訊),并且點對點消息隊列是***選擇。點對點消息隊列還可以與操作系統進行交互,例如,用于獲取電源信息。本文不介紹點對點消息隊列的其他用途,這些用途留待您了解核心原理之后自行探究。

本部分以一個您易于了解的方式描述點對點消息隊列函數。

當開發人員使用 IPC 時,一個進程創建用于寫入的隊列,另一個進程創建用于讀取的隊列 (CreateMsgQueue)。在雙向 IPC 通訊中,開發人員在通訊的每一端(在兩個獨立的進程間或同一進程的兩個對象間)都需要兩個隊列。

在使用點對點消息隊列時,開發人員可以采用若干種方法。例如,有用于讀取 (ReadMsgQueue)、寫入 (WriteMsgQueue) 和關閉隊列 (CloseMsgQueue) 的方法。此外,如果除了隊列句柄之外,開發人員還具有擁有該隊列的源進程的句柄,那么他們就可以打開現有隊列 (OpenMsgQueue)。開發人員可以查詢一些統計信息 (GetMsgQueueInfo),***可以使他們的應用程序等待隊列句柄 (WaitForSingleObject) 接收信號,以便確定隊列中是否有數據。

打開一個現有隊列時,開發人員只能指定一個選項 — 該隊列是用于讀還是用于寫。當創建隊列時,開發人員可以指定其他參數:名稱 (lpszName) 和選項(類型為 MSGQUEUOPTIONS 的 lpOptions)。隊列選項包括以下內容:單個消息的***大小 (cbMaxMessage)、隊列中消息的隨機***數量 (dwMaxMessages)、是否應該動態分配緩沖區(dwFlags、MSGQUEUE_NOPRECOMMIT),以及閱讀器是否可以在沒有編寫器的情況下存在(dwFlags、MSGQUEUE_ALLOW_BROKEN),反之亦然。關閉隊列時,開發人員將句柄作為參數 ( hMsgQ )。

寫入隊列需要一個指針 ( lpBuffer )、消息中的字節數 ( cbDataSize )、超時 ( dwTimeout ),以及該消息是否是一個警告消息( dwFlags 、MSGQUEUE_MSGALERT)。從隊列讀取需要:傳入一個緩沖區 (lpBuffer)、緩沖區的大小 ( cbBufferSize ),以及一個超時值 ( dwTimeout );因此,可獲悉實際字節數 ( lpNumberOfBytesRead ) 以及該消息是否為一個警告( pdwFlags 、MSGQUEUE_MSGALERT)。注意,超時是以毫秒計算的;0 表示“不阻塞”,而 INFINITE (-1) 表示“阻塞,直到操作完成或隊列狀態更改”。如果成功,讀函數和寫函數都返回 TRUE;否則,返回 FALSE。在后一種情況中,您可以獲得擴展的錯誤信息 (GetLastError)。函數返回 FALSE 的可能原因有:緩沖區太小 (ERROR_INSUFFICIENT_BUFFER);沒有編寫器或閱讀器,且開發人員未按前面段落中所述的那樣指定 MSGQUEUE_ALLOW_BROKEN (ERROR_PIPE_NOT_CONNECTED);或者發生超時 (ERROR_TIMEOUT)。對于 WriteMsgQueue,如果未按前面段落中所述的那樣指定 MSGQUEUE_NOPRECOMMIT,則也可能得到錯誤 ERROR_OUTOFMEMORY。

可調用 GetMsgQueueInfo 來獲得包含統計信息的結構 (MSGQUEUEINFO)。該結構包含的信息包括開發人員在創建隊列時傳入的一些參數:消息的***大小 (cbMaxMessage)、消息的***數量 (dwMaxMessages)、是否應該動態分配緩沖區(dwFlags、MSGQUEUE_NOPRECOMMIT),以及閱讀器是否可以在沒有編寫器的情況下存在(dwFlags、MSGQUEUE_ALLOW_BROKEN),反之亦然。此外,該結構還包含以下內容:當前隊列中非警告信息的數量 (dwCurrentMessages)、隊列中曾經存在消息的***數量 (dwMaxQueueMessages)、當前閱讀器的數量 (wNumReaders),以及當前編寫器的數量 (wNumWriters)。

【編輯推薦】

  1. ASP.NET中無Cookie會話的優點與缺點
  2. 無Cookie會話的實現
  3. ASP.NET Cookie:不是問題的問題
  4. .NET框架中的XML:XmlSerializer的內部原理
  5. .NET框架中的XML基礎類:xsd.exe
責任編輯:yangsai 來源: MSDN
相關推薦

2009-08-06 16:21:09

點對點消息隊列

2017-05-15 19:40:40

AndroidIPC機制

2017-10-11 15:08:28

消息隊列常見

2009-07-17 13:38:32

OEMIoControWinCE

2011-05-31 11:55:00

Android 消息機制

2023-07-10 09:18:39

Redis訂閱模型

2010-04-21 14:49:13

Unix消息隊列

2018-04-26 15:18:49

RTOS應用MPU

2021-03-11 06:01:41

Linux消息隊列

2025-01-02 09:23:05

2023-12-18 08:36:39

消息隊列微服務開發

2022-12-13 09:19:26

分布式消息隊列

2023-10-09 08:24:54

IPC機制Binder

2024-05-10 09:36:36

架構消息隊列

2023-12-30 13:47:48

Redis消息隊列機制

2019-07-19 07:56:13

消息隊列消息代理消息中間件

2024-06-25 08:29:23

Android系統休眠

2021-02-19 09:19:11

消息隊列場景

2009-11-09 11:15:06

WCF消息隊列

2010-04-13 17:00:43

Unix消息隊列
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级淫片免费视频黄 | 亚洲+变态+欧美+另类+精品 | 国产专区在线 | 日韩精品在线一区 | 国产精品亚洲一区二区三区在线 | 久产久精国产品 | 秋霞电影院午夜伦 | 欧美日韩精品一区 | 亚洲成人av| 青青草一区 | 精品免费国产视频 | 国产精品视频在线播放 | 男女激情网站免费 | 91在线免费视频 | h肉视频 | 欧美白人做受xxxx视频 | 久久久久国产 | 国产九九九 | 国产精品免费看 | 欧美在线二区 | 色欧美片视频在线观看 | 中文字幕99 | 国产主播第一页 | 亚洲视频国产 | 国产一区二区久久 | 日韩成人 | 91色网站| 一区二区三区四区国产 | 国产精品免费观看视频 | 久久久久国产一区二区三区四区 | 成人深夜福利 | 精品一级 | 日韩三级一区 | 色综合久久88色综合天天 | 羞羞网站免费观看 | 久久成人精品视频 | 日韩a | 国产高清一区二区三区 | 日本午夜精品 | 国产精品久久九九 | 成人在线免费视频观看 |