Objectnamen
Benoemde objecten bieden een eenvoudige manier voor processen om objectgrepen te delen. Nadat een proces een benoemde gebeurtenis, mutex, semaphore of timerobject heeft gemaakt, kunnen andere processen de naam gebruiken om de juiste functie aan te roepen (OpenEvent-, OpenMutex-, OpenSemaphoreof OpenWaitableTimer) om een ingang naar het object te openen. Naamvergelijking is hoofdlettergevoelig.
De namen van gebeurtenis,semaphore, mutex, waitable timer, bestandstoewijzing en taakobjecten delen dezelfde naamruimte. Als u probeert een object te maken met een naam die wordt gebruikt door een object van een ander type, mislukt de functie en GetLastErrorERROR_INVALID_HANDLEretourneert. Gebruik daarom bij het maken van benoemde objecten unieke namen en zorg ervoor dat u de functie retourwaarden controleert op dubbele-naamfouten.
Als u probeert een object te maken met een naam die wordt gebruikt door een object van hetzelfde type, slaagt de functie, retourneert de functie een ingang naar het bestaande object en GetLastError retourneert ERROR_ALREADY_EXISTS. Als bijvoorbeeld de naam die is opgegeven in een aanroep naar de functie CreateMutex overeenkomt met de naam van een bestaand mutex-object, retourneert de functie een ingang naar het bestaande object. In dit geval is de aanroep van CreateMutex- gelijk aan een aanroep naar de Functie OpenMutex. Het gebruik van meerdere processen CreateMutex- voor dezelfde mutex is daarom gelijk aan het hebben van één proces dat CreateMutex aanroept terwijl de andere processen OpenMutex-aanroepen, behalve dat het niet nodig is om ervoor te zorgen dat het maken van het proces eerst wordt gestart. Wanneer u deze techniek gebruikt voor mutex-objecten, moet echter geen van de aanroepende processen onmiddellijk eigendom van de mutex aanvragen. Als meerdere processen direct eigendom aanvragen, kan het lastig zijn om te voorspellen welk proces daadwerkelijk het oorspronkelijke eigendom krijgt.
Een Terminal Services-omgeving heeft een globale naamruimte voor gebeurtenissen, semaphores, mutexes, wachtbare timers, bestandstoewijzingsobjecten en taakobjecten. Daarnaast heeft elke Terminal Services-clientsessie een eigen afzonderlijke naamruimte voor deze objecten. Terminal Services-clientprocessen kunnen objectnamen gebruiken met een voorvoegsel 'Global\' of 'Local\' om expliciet een object te maken in de algemene naamruimte of sessienaamruimte. Zie kernelobjectnaamruimtenvoor meer informatie. Snelle gebruikerswisseling wordt geïmplementeerd met behulp van Terminal Services-sessies (elke gebruiker meldt zich aan bij een andere sessie). Namen van kernelobjecten moeten voldoen aan de richtlijnen die worden beschreven voor Terminal Services, zodat toepassingen meerdere gebruikers kunnen ondersteunen.
Synchronisatieobjecten kunnen worden gemaakt in een privénaamruimte. Zie objectnaamruimtenvoor meer informatie.
Verwante onderwerpen