Não tenho certeza se diria que o namespace do Win32 "mapeia para o namespace \Global??
". Em vez disso, os links simbólicos no diretório \Global??
são usados para interpretar nomes de dispositivos passados para CreateFile
.
Quando você tenta abrir um objeto de arquivo em um dispositivo, os links simbólicos em \Global??
definem os nomes de dispositivos internos equivalentes. Há uma tradução estranha que acontece: digamos que você queira abrir um identificador para o que normalmente chamamos de COM1:
. O nome que você deve passar para CreateFile seria \.\COM1
. O \.
é alterado para \Global??
e, em seguida, uma pesquisa é feita para um link simbólico chamado \Global??\COM1
O link simbólico diz que o nome do objeto de dispositivo correspondente é \Device\Serial0
(ou seja o que for).
Observe que a \
é, na verdade, a sintaxe que introduz um nome UNC (Universal Name Convention). O período após o \
significa "nesta máquina". Você provavelmente sabe que, para arquivos, um nome de servidor remoto pode aparecer após o \
.
De qualquer forma, o valor do objeto de link simbólico é o nome de um objeto de dispositivo, criado pelo driver da porta serial, que representa a porta serial específica. Você pode encontrar esses nomes no diretório \Device
do namespace do objeto. Quando cria o objeto do dispositivo e o nome desse objeto, o driver da porta serial também cria o objeto de link simbólico correspondente.
Este mecanismo não é usado para outros objetos visíveis ao Win32. Por exemplo, se você criar um objeto de evento nomeado com CreateEvent, seu nome será exibido em \Sessions\<your session number>\BaseNamedObjects
por padrão. Não há links simbólicos envolvidos lá.