Espaces de noms d’objets de noyau

Un serveur des services Bureau à distance a plusieurs espaces de noms pour les objets de noyau nommés suivants : événements, sémaphores, mutexes, minuteurs d’attente, objets de mappage de fichiers et objets de travail. Il existe un espace de noms global utilisé principalement par les services dans les applications client/serveur. En outre, chaque session cliente a un espace de noms distinct pour ces objets, comme dans Windows Vista.

Les espaces de noms de session client distincts permettent à plusieurs clients d’exécuter les mêmes applications sans interférer entre eux. Pour les processus démarrés sous une session cliente, le système utilise l’espace de noms de session par défaut. Toutefois, ces processus peuvent utiliser l’espace de noms global en précalant le préfixe « Global\ » au nom de l’objet. Par exemple, le code suivant appelle CreateEvent et crée un objet d’événement nommé CSAPP dans l’espace de noms global :

Notes

L’espace de noms global n’est pas disponible pour les applications du Windows Store.

 

CreateEvent( NULL, FALSE, FALSE, "Global\\CSAPP" );

Les applications de service dans un environnement des services Bureau à distance utilisent l’espace de noms global par défaut.

La session zéro n’est utilisée que pour l’hébergement des services et il n’existe aucune session de console, contrairement aux versions précédentes de Windows.

L’espace de noms global permet aux processus sur plusieurs sessions clientes de communiquer avec une application de service. Par exemple, une application cliente/serveur peut utiliser un objet mutex pour la synchronisation. Le module serveur peut créer l’objet mutex dans l’espace de noms global. Ensuite, une session cliente peut utiliser le préfixe « Global\ » pour ouvrir l’objet mutex.

Une autre utilisation de l’espace de noms global est pour les applications qui utilisent des objets nommés pour détecter qu’il existe déjà un instance de l’application s’exécutant dans le système sur toutes les sessions. Cet objet nommé doit être créé ou ouvert dans l’espace de noms global au lieu de l’espace de noms par session. Le cas le plus courant d’exécution de l’application une fois par session est pris en charge par défaut, car l’objet nommé est créé dans un espace de noms par session.

En plus du préfixe « Global\ », les processus clients peuvent utiliser le préfixe « Local\ » pour créer explicitement un objet dans leur espace de noms de session. Ces mots clés respectent la casse.

Le préfixe « Session\ » est réservé à l’utilisation du système et vous ne devez pas l’utiliser dans les noms des objets du noyau.

Le changement rapide d’utilisateur est implémenté à l’aide de sessions des services Bureau à distance. Le premier utilisateur à se connecter utilise la session 1, l’utilisateur suivant pour se connecter utilise la session 2, et ainsi de suite. Les noms d’objets de noyau doivent suivre les instructions décrites pour les services Bureau à distance afin que les applications puissent prendre en charge plusieurs utilisateurs.

La création d’un objet de mappage de fichiers dans l’espace de noms global, à l’aide de CreateFileMapping, à partir d’une session autre que la session zéro est une opération privilégiée. Pour cette raison, seCreateGlobalPrivilege doit être activé pour qu’une application s’exécutant dans une session de serveur d’hôte de session Bureau à distance arbitraire (hôte de session Bureau à distance) soit activée pour créer un objet de mappage de fichiers dans l’espace de noms global. Le privilège case activée est limité à la création d’objets de mappage de fichiers et ne s’applique pas à l’ouverture d’objets existants. Par exemple, si un service ou le système crée un objet de mappage de fichiers, tout processus en cours d’exécution dans n’importe quelle session peut accéder à cet objet de mappage de fichiers à condition que l’utilisateur dispose de l’accès nécessaire.