ITabletContextP :: UseNamedSharedMemoryCommunications, méthode
Configure la communication de la mémoire partagée pour le contexte de la tablette.
Syntaxe
HRESULT UseNamedSharedMemoryCommunications(
[in] DWORD pid,
[in] LPCSTR pszCallerSid,
[in] LPCSTR pszCallerIntegritySid,
[out] DWORD *pdwEventMoreDataId,
[out] DWORD *pdwEventClientReadyId,
[out] DWORD *pdwMutexAccessId,
[out] DWORD *pdwFileMappingId
);
Paramètres
-
PID [ dans]
-
ID de processus du client qui accède à la mémoire partagée.
-
pszCallerSid [ dans]
-
Identificateur de sécurité de l’appelant de la fonction.
-
pszCallerIntegritySid [ dans]
-
Identificateur de sécurité qui peut vérifier l’intégrité de la fonction appelante.
-
pdwEventMoreDataId [ à]
-
Entier utilisé pour construire le nom d’un événement. L’événement indique s’il y a plus de données.
-
pdwEventClientReadyId [ à]
-
Entier utilisé pour construire le nom d’un événement. L’événement signale que le client est prêt à recevoir des données. L’événement est signalé après le traitement de nouvelles données.
-
pdwMutexAccessId [ à]
-
Pointeur vers l’identificateur d’accès de la mémoire partagée.
-
pdwFileMappingId [ à]
-
Entier qui identifie la mémoire partagée.
Valeur de retour
Si cette méthode est réussie, elle retourne la valeur _ OK. Sinon, elle retourne un code d’erreur HRESULT .
Notes
La méthode UseNamedSharedMemoryCommunications fait partie du protocole de mémoire partagée du Tablet PC. Un client sans privilèges élevés passe dans un identificateur de sécurité (SID) et un identificateur de sécurité de niveau d’intégrité (IL-SID) afin que le service tablette puisse utiliser des listes de contrôle d’accès (ACL) pour accéder aux objets de mémoire partagée. Si le client dispose de privilèges élevés, il doit utiliser UseSharedMemoryCommunications, qui est l’API appelée si le service a déjà un privilège élevé.
La structure d' _ en-tête SHAREDMEMORY stocke l’en-tête de mémoire partagée.
La structure d' _ en-tête SHAREDMEMORY est convertie à partir des données référencées par le mappage de fichier. Les données de paquets brutes suivent l' _ en-tête SHAREDMEMORY. Les données de paquets brutes peuvent être lues à partir de la mémoire partagée lorsque l’événement référencé par pdwEventClientReadyId est déclenché.
La liste suivante décrit la séquence d’événements pour l’accès à et l’utilisation de la mémoire partagée.
- Le client déclenche l’événement clientReady.
- Le client attend l’événement moreData.
- Le client acquiert le mutex.
- Le client lit les données de paquets à partir de la section de la mémoire partagée qui suit l’en-tête. Les numéros de série s’affichent dans la mémoire partagée après les données du paquet.
- Le client gère les données en fonction de la valeur de dwEvent.
- Le client écrit-1 (0xFFFFFFFF) dans dwEvent.
- Le client libère le mutex.
- Le client déclenche l’événement clientReady.
Les noms d’événements sont créés en mettant en forme la sortie de cette méthode. Les définitions suivantes peuvent être utilisées conjointement avec sprintf ou son équivalent pour créer les noms d’événements.
#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")
Dans chaque définition, la section% d est remplacée par l’ID de processus, et la section% u est remplacée par l’entier retourné dans pdwEventMoreDataId ou pdwEventClientReadyId.
Spécifications
| Condition requise | Valeur |
|---|---|
| Client minimal pris en charge |
Windows [Applications de bureau Vista uniquement] |
| Serveur minimal pris en charge |
Aucun pris en charge |
| Bibliothèque |
|