2010-04-15 11 views
6

Quando si utilizza GetModuleFileNameEx per interrogare il percorso dell'immagine di un processo in esecuzione, alcuni processi hanno un percorso immagine che inizia con "\ ?? \". Ad esempio, mentre la maggior parte dei processi inizia "C: \ WINDOWS", alcuni processi iniziano con "\ ?? \ C: \ WINDOWS".Che cosa significa " ?? " all'inizio di un percorso di Windows?

Che cosa significa \ ?? \ all'inizio su un percorso di Windows?

risposta

7

È un percorso di lunghezza estesa Unicode - vedere Naming Files, Paths, and Namespaces in MSDN (la sezione "Limitazione massima lunghezza percorso").

(A proposito, cosa si intende \\?\ piuttosto che \??\?)

+0

Una specie di, in pratica, ma questo non spiega molto. I percorsi completi di Windows vengono convertiti in un percorso NT con il prefisso "\ ?? \" per le lettere di unità e sostituendo il "\\" iniziale con "\ ?? \ UNC \" per i percorsi UNC. Per un percorso Unicode "\\? \", Sostituisce semplicemente il prefisso "\\? \" Con "\ ?? \". Questa è la directory "DosDevices" virtuale dell'oggetto Object Manager nello spazio dei nomi dell'oggetto, per la quale cerca dapprima i dispositivi di sessione di accesso locali definiti in "\ Sessions \ 0 \ DosDevices \\ [Logon_AuthenticationId]" e quindi i dispositivi globali definiti in "\ Globale??". – eryksun

-1

2 punti interrogativi di fronte a lettera di unità, vale a dire \ ?? \ C: significa che è in esecuzione in modalità Kernel. (nel sistema PICK o Multivalore, chiameremmo questo livello "modalità monitor" dove un'istruzione può indirizzare direttamente la memoria o eseguire l'I/O del disco.) La modalità Kernal è meglio spiegata in questo post: What do "\\.\", "\??\", "\\?\", "\\" mean? a cui puntava il symbolhound punto com

Un altro modo di dirlo; la modalità utente esaurisce lo spazio di lavoro per un utente/finestra, mentre la modalità kernal utilizza lo spazio di memoria comune a tutti, il che significa che si potrebbe fermare la macchina invece di interrompere una sola finestra/scheda di Windows.

Vi lascio a voi per cercare la modalità kernel (motore)

+0

Molte API native esistono nel kernel e nella modalità utente (rispettivamente ntoskrnl.exe e ntdll.dll). Quindi la tua richiesta è sbagliata. – 0xC0000022L