ITabletCoNtextP::UseNamedSharedMemoryCommunications 方法
設定平板電腦內容的共用記憶體通訊。
語法
HRESULT UseNamedSharedMemoryCommunications(
[in] DWORD pid,
[in] LPCSTR pszCallerSid,
[in] LPCSTR pszCallerIntegritySid,
[out] DWORD *pdwEventMoreDataId,
[out] DWORD *pdwEventClientReadyId,
[out] DWORD *pdwMutexAccessId,
[out] DWORD *pdwFileMappingId
);
參數
-
pid [in]
-
存取共用記憶體之用戶端的進程識別碼。
-
pszCallerSid [in]
-
函式呼叫端的安全性識別碼。
-
pszCallerIntegritySid [in]
-
可以驗證呼叫函式完整性的安全性識別碼。
-
pdwEventMoreDataId [out]
-
用來建構事件名稱的整數。 事件指出是否有更多資料。
-
pdwEventClientReadyId [out]
-
用來建構事件名稱的整數。 事件會指出用戶端已準備好接收資料。 處理新資料之後,事件會發出訊號。
-
pdwMutexAccessId [out]
-
共用記憶體存取識別碼的指標。
-
pdwFileMappingId [out]
-
識別共用記憶體的整數。
傳回值
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
UseNamedSharedMemoryCommunications方法是平板電腦共用記憶體通訊協定的一部分。 沒有提高許可權的用戶端會傳入安全性識別碼 (SID) 和完整性層級安全性識別碼 (IL-SID) ,讓平板電腦服務可以使用存取控制清單 (ACL) 來存取共用記憶體物件。 如果用戶端具有提高的許可權,它應該使用 UseSharedMemoryCommunications,這是服務已經有提高許可權時所呼叫的 API。
SHAREDMEMORY_HEADER結構會儲存共用記憶體標頭。
SHAREDMEMORY_HEADER結構是從檔案對應所參考的資料轉換。 原始封包資料遵循 SHAREDMEMORY_HEADER。 引發 pdwEventClientReadyId 所參考的事件時,可以讀取共用記憶體的原始封包資料。
下列清單描述存取和使用共用記憶體的事件順序。
- 用戶端會引發 clientReady 事件。
- 用戶端會等候 moreData 事件。
- 用戶端會取得 mutex。
- 用戶端會從標頭後面的共用記憶體區段讀取封包資料。 序號會出現在封包資料之後的共用記憶體中。
- 用戶端會根據 dwEvent的值來處理資料。
- 用戶端會將 -1 (0xFFFFFFFF) 寫入 dwEvent。
- 用戶端會釋放 mutex。
- 用戶端會引發 clientReady 事件。
事件名稱是藉由格式化這個方法的輸出所建立。 下列定義可以與 sprintf 搭配使用,或其對等專案來建立事件名稱。
#define WISPTIS_SM_MORE_DATA_EVENT_NAME _T("wisptis-1-%d-%u")
#define WISPTIS_SM_CLIENT_DONE_EVENT_NAME _T("wisptis-2-%d-%u")
#define WISPTIS_SM_SECTION_NAME _T("wisptis-3-%d-%u")
#define WISPTIS_SM_THREAD_EVENT_NAME _T("wisptis-4-%u")
在每個定義中,%d 區段會取代為進程識別碼,而 %u 區段會取代為 pdwEventMoreDataId 或 pdwEventClientReadyId中傳回的整數。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 |
都不支援 |
程式庫 |
|