Win32 e o espaço de nomes global

2

Estou estudando a arquitetura do Windows NT. Gostaria de saber qual é a relação entre o namespace "Win32" e o "\ Global ??" namespace no namespace nt? Tanto quanto eu entendo os mapas de namespace win32 para o "\ Global ??" namespace.

    
por Othman 02.03.2015 / 05:51

1 resposta

2

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á.

    
por 02.03.2015 / 06:15