共用方式為


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 所參考的事件時,可以讀取共用記憶體的原始封包資料。

下列清單描述存取和使用共用記憶體的事件順序。

  1. 用戶端會引發 clientReady 事件。
  2. 用戶端會等候 moreData 事件。
  3. 用戶端會取得 mutex。
  4. 用戶端會從標頭後面的共用記憶體區段讀取封包資料。 序號會出現在封包資料之後的共用記憶體中。
  5. 用戶端會根據 dwEvent的值來處理資料。
  6. 用戶端會將 -1 (0xFFFFFFFF) 寫入 dwEvent
  7. 用戶端會釋放 mutex。
  8. 用戶端會引發 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 區段會取代為 pdwEventMoreDataIdpdwEventClientReadyId中傳回的整數。

規格需求

需求
最低支援的用戶端
Windows Vista [僅限傳統型應用程式]
最低支援的伺服器
都不支援
程式庫
Wisptis.exe

另請參閱

UseSharedMemoryCommunications

ITabletCoNtextP