次の方法で共有


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]

共有メモリにアクセスするクライアントのプロセス ID。

pszCallerSid [in]

関数呼び出し元のセキュリティ識別子。

pszCallerIntegritySid [in]

呼び出し元の関数の整合性を確認できるセキュリティ識別子。

pdwEventMoreDataId [out]

イベントの名前を作成するために使用される整数。 イベントは、より多くのデータがあるかどうかを示します。

pdwEventClientReadyId [out]

イベントの名前を作成するために使用される整数。 イベントは、クライアントがデータを受信する準備ができていることを通知します。 イベントは、新しいデータを処理した後に通知されます。

pdwMutexAccessId [out]

共有メモリのアクセス識別子へのポインター。

pdwFileMappingId [out]

共有メモリを識別する整数。

戻り値

このメソッドが成功すると、 S_OKが返されます。 それ以外の場合は、 HRESULT エラー コードが返されます。

解説

UseNamedSharedMemoryCommunications メソッドは、タブレット PC 共有メモリ プロトコルの一部です。 管理者特権のないクライアントは、セキュリティ識別子 (SID) と整合性レベルセキュリティ識別子 (IL-SID) を渡して、タブレット サービスがアクセス制御リスト (ACL) を使用して共有メモリ オブジェクトにアクセスできるようにします。 クライアントに昇格された特権がある場合は、UseSharedMemoryCommunications を使用する必要があります。これは、サービスに既に昇格された特権がある場合に呼び出される API です。

SHAREDMEMORY_HEADER構造体には、共有メモリ ヘッダーが格納されます。

SHAREDMEMORY_HEADER構造体は、ファイル マッピングによって参照されるデータからキャストされます。 生パケット データは 、SHAREDMEMORY_HEADERに従います。 pdwEventClientReadyId によって参照されるイベントが発生すると、生パケット データを共有メモリから読み取ることができます。

次の一覧では、共有メモリにアクセスして使用するためのイベントのシーケンスについて説明します。

  1. クライアントは clientReady イベントを発生させます。
  2. クライアントは moreData イベントを待機します。
  3. クライアントはミューテックスを取得します。
  4. クライアントは、ヘッダーに続く共有メモリのセクションからパケット データを読み取ります。 シリアル番号は、パケット データの後の共有メモリに表示されます。
  5. クライアントは 、dwEvent の値に応じてデータを処理します。
  6. クライアントは-1 (0xFFFFFFFF) を dwEvent に書き込みます。
  7. クライアントはミューテックスを解放します。
  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 セクションはプロセス ID に置き換えられ、%u セクションは pdwEventMoreDataId または pdwEventClientReadyId で返される整数に置き換えられます。

必要条件

要件
サポートされている最小のクライアント
Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー
サポートなし
ライブラリ
Wisptis.exe

関連項目

UseSharedMemoryCommunications

ITabletContextP