Freigeben über


ITabletContextP::UseNamedSharedMemoryCommunications-Methode

Richtet die Shared Memory-Kommunikation für den Tablet-Kontext ein.

Syntax

HRESULT UseNamedSharedMemoryCommunications(
  [in]  DWORD  pid,
  [in]  LPCSTR pszCallerSid,
  [in]  LPCSTR pszCallerIntegritySid,
  [out] DWORD  *pdwEventMoreDataId,
  [out] DWORD  *pdwEventClientReadyId,
  [out] DWORD  *pdwMutexAccessId,
  [out] DWORD  *pdwFileMappingId
);

Parameter

pid [in]

Die Prozess-ID des Clients, der auf freigegebenen Arbeitsspeicher zugreift.

pszCallerSid [in]

Die Sicherheits-ID des Funktionsaufrufers.

pszCallerIntegritySid [in]

Der Sicherheitsbezeichner, der die Integrität der aufrufenden Funktion überprüfen kann.

pdwEventMoreDataId [out]

Eine ganze Zahl, die zum Erstellen des Namens eines Ereignisses verwendet wird. Das -Ereignis gibt an, ob mehr Daten vorhanden sind.

pdwEventClientReadyId [out]

Eine ganze Zahl, die zum Erstellen des Namens eines Ereignisses verwendet wird. Das Ereignis signalisiert, dass der Client bereit ist, Daten zu empfangen. Das Ereignis wird nach der Verarbeitung neuer Daten signalisiert.

pdwMutexAccessId [out]

Ein Zeiger auf den Zugriffsbezeichner des freigegebenen Speichers.

pdwFileMappingId [out]

Eine ganze Zahl, die den freigegebenen Arbeitsspeicher identifiziert.

Rückgabewert

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.

Bemerkungen

Die UseNamedSharedMemoryCommunications-Methode ist Teil des Freigegebenen Speicherprotokolls für Tablet PC. Ein Client ohne erhöhte Berechtigungen übergibt eine Sicherheits-ID (SID) und einen Integritätsgrad-Sicherheitsbezeichner (IL-SID), damit der Tablet-Dienst Zugriffssteuerungslisten (Access Control Lists, ACL) für den Zugriff auf die freigegebenen Speicherobjekte verwenden kann. Wenn der Client über erhöhte Berechtigungen verfügt, sollte er UseSharedMemoryCommunications verwenden. Dies ist die API, die aufgerufen wird, wenn der Dienst bereits über erhöhte Berechtigungen verfügt.

Die SHAREDMEMORY_HEADER-Struktur speichert den Shared Memory-Header.

Die SHAREDMEMORY_HEADER-Struktur wird aus den Daten umgewandelt, auf die durch die Dateizuordnung verwiesen wird. Die rohen Paketdaten folgen der SHAREDMEMORY_HEADER. Unformatierte Paketdaten können aus dem freigegebenen Arbeitsspeicher gelesen werden, wenn das Ereignis ausgelöst wird, auf das von pdwEventClientReadyId verwiesen wird.

In der folgenden Liste wird die Abfolge der Ereignisse für den Zugriff auf und die Verwendung von freigegebenem Arbeitsspeicher beschrieben.

  1. Der Client löst das clientReady-Ereignis aus.
  2. Der Client wartet auf das ereignis moreData.
  3. Der Client ruft den Mutex ab.
  4. Der Client liest Paketdaten aus dem Abschnitt des freigegebenen Arbeitsspeichers, der auf den Header folgt. Seriennummern werden im freigegebenen Speicher nach den Paketdaten angezeigt.
  5. Der Client verarbeitet Daten abhängig vom Wert von dwEvent.
  6. Der Client schreibt -1 (0xFFFFFFFF) in dwEvent.
  7. Der Client gibt den Mutex frei.
  8. Der Client löst das clientReady-Ereignis aus.

Die Ereignisnamen werden erstellt, indem die Ausgabe dieser Methode formatiert wird. Die folgenden Definitionen können in Verbindung mit sprintf oder seiner Entsprechung verwendet werden, um die Ereignisnamen zu erstellen.

#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")

In jeder Definition wird der Abschnitt %d durch die Prozess-ID und der Abschnitt %u durch die ganze Zahl ersetzt, die in pdwEventMoreDataId oder pdwEventClientReadyId zurückgegeben wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Nicht unterstützt
Bibliothek
Wisptis.exe

Siehe auch

UseSharedMemoryCommunications

ITabletContextP