Nomi degli oggetti
Gli oggetti denominati offrono un modo semplice per i processi per condividere gli handle degli oggetti. Dopo che un processo ha creato un evento denominato, mutex, semaforo o oggetto timer, altri processi possono usare il nome per chiamare la funzione appropriata ( OpenEvent, OpenMutex, OpenSemaphoreo OpenWaitableTimer) per aprire un handle all'oggetto. Il confronto tra nomi fa distinzione tra maiuscole e minuscole.
I nomi di eventi, semafori, mutex, timer waitable, mapping di file e oggetti processo condividono lo stesso spazio dei nomi. Se si tenta di creare un oggetto usando un nome in uso da un oggetto di un altro tipo, la funzione ha esito negativo e GetLastError restituisce ERROR_INVALID_HANDLE. Pertanto, quando si creano oggetti denominati, usare nomi univoci e assicurarsi di controllare i valori restituiti dalla funzione per gli errori di nome duplicato.
Se si tenta di creare un oggetto usando un nome in uso da un oggetto dello stesso tipo, la funzione ha esito positivo, restituendo un handle all'oggetto esistente e GetLastError restituisce ERROR_ALREADY_EXISTS. Ad esempio, se il nome specificato in una chiamata alla funzione CreateMutex corrisponde al nome di un oggetto mutex esistente, la funzione restituisce un handle all'oggetto esistente. In questo caso, la chiamata a CreateMutex equivale a una chiamata alla funzioneOpenMutex. L'uso di più processi CreateMutex per lo stesso mutex equivale quindi ad avere un processo che chiama CreateMutex mentre gli altri processi chiamano OpenMutex, ad eccezione del fatto che elimina la necessità di assicurarsi che il processo di creazione venga avviato per primo. Quando si usa questa tecnica per gli oggetti mutex, tuttavia, nessuno dei processi chiamante deve richiedere la proprietà immediata del mutex. Se più processi richiedono la proprietà immediata, può essere difficile prevedere quale processo ottiene effettivamente la proprietà iniziale.
Un ambiente di Servizi terminal dispone di uno spazio dei nomi globale per eventi, semafori, mutex, timer waitable, oggetti di mapping di file e oggetti processo. Inoltre, ogni sessione client di Servizi terminal ha uno spazio dei nomi separato per questi oggetti. I processi client di Servizi terminal possono usare nomi di oggetto con un prefisso "Global\" o "Local\" per creare in modo esplicito un oggetto nello spazio dei nomi globale o sessione. Per altre informazioni, vedere spazi dei nomi dell'oggetto kernel . Il passaggio rapido dell'utente viene implementato usando le sessioni di Servizi terminal (ogni utente accede a una sessione diversa). I nomi degli oggetti del kernel devono seguire le linee guida descritte per Servizi terminal in modo che le applicazioni possano supportare più utenti.
Gli oggetti di sincronizzazione possono essere creati in uno spazio dei nomi privato. Per altre informazioni, vedere spazi dei nomi degli oggetti .
Argomenti correlati