2010-04-15 2 views
6

GetModuleFileNameEx를 사용하여 실행중인 프로세스의 이미지 경로를 쿼리 할 때 일부 프로세스에는 "\ ?? \"로 시작하는 이미지 경로가 있습니다. 예를 들어 대부분의 프로세스는 "C : \ WINDOWS"를 시작하지만 일부 프로세스는 "\ ?? \ C : \ WINDOWS"를 시작합니다.Windows 경로의 "\ "는 무엇을 의미합니까?

Windows 경로에서 \\ \ 의미는 무엇입니까?

답변

7

유니 코드 확장 길이 경로 이름입니다. MSDN의 Naming Files, Paths, and Namespaces ("최대 경로 길이 제한"섹션 참조)을 참조하십시오.

은 (그건 그렇고, 당신은 \\?\보다는 \??\ 의미합니까?) 드라이브 문자 앞에

+0

일종의, 실제로는 일종의 설명이 아닙니다. 정규화 된 Windows 경로는 드라이브 문자에 "\ ?? \"를 앞에두고 UNC 경로에 "\\"를 "\\ \ UNC \"로 바꾸면 NT 경로로 변환됩니다. 유니 코드 "\\? \"경로의 경우 단순히 "\\? \"접두사를 "\"로 바꿉니다. 이것은 객체 네임 스페이스에서 "\ Sessions \ 0 \ DosDevices \\ [Logon_AuthenticationId]"에 정의 된 로컬 로그온 세션 장치를 먼저 검색 한 다음 "\ Sessions \ 0 \ DosDevices \\ [Logon_AuthenticationId]"에 정의 된 전역 장치를 검색하는 개체 관리자의 가상 "DosDevices" 글로벌 ?? ". – eryksun

-1

2 물음표, 즉, \ ?? \ C :는 커널 인 모드에서 실행되는 것을 의미한다. (PICK 또는 다중 값 OS에서는 명령이 메모리를 직접 주소 지정하거나 디스크 IO를 수행 할 수있는이 레벨을 "모니터 모드"라고 부릅니다.) Kernal 모드는이 게시물에서 더 잘 설명됩니다. symbolhound.com에서 가리킨 What do "\\.\", "\??\", "\\?\", "\\" mean?

다른 방법으로두기. 사용자 모드에서는 사용자/창에 대한 작업 영역이 부족한 반면 커널 모드에서는 모든 사람이 공통으로 사용하는 메모리 공간을 사용하지만 하나의 Windows 창/탭을 중단하는 대신 시스템을 중지 할 수 있습니다.

(엔진) 커널 모드를 검색하려면 두십시오.

+0

많은 원시 API는 커널 및 사용자 모드 (각각 ntoskrnl.exe 및 ntdll.dll)에 있습니다. 따라서 귀하의 주장은 잘못되었습니다. – 0xC0000022L

관련 문제