소스코드리뷰(XIX) 파일경로로부터 PIDL을 구해보자

[목차(도우미)]

대상: 마이크로소프트 윈도 OS

데스크탑의 PIDL(Pointer to an IDentifier List)값은 0이다. 이런 값은 전용 API도 있다. PIDL을 알면 경로를 알수 있는데 GetPathFromIDList 함수를 이용하면 된다. SHBrowseForFolder 의 결과값으로 경로를 구할 경우 등에 사용하면 된다.

역으로 경로로부터 PIDL 값을 구할 필요가 생기기도 하는데 이는 어떻게 할까? 
이름이 역으로 존재하면 좋았겠지만 윈도 설계자들은 이름을 그렇게 짓지 않았다. 즉 GetIDListFromPath 이란 함수는 윈도 API에 들어있지 않다.
SHParseDisplayName 이란 API를 이용하면 파일경로로부터 PIDL 을 얻을 수 있다.

참고로 IShellFolder 관련 메소드함수에도 ParseDisplayName이란 메소드가 존재하지만 유니코드 변환 등에 의도대로  변환되지 않는 경우가 있다. SHParseDisplayName은 유니코드를 의식하지 않아도 PIDL을 구해준다.
MSDN정보(영문)
http://msdn.microsoft.com/en-us/library/bb762236(v=vs.85).aspx

선인장

(선인장: 식물원에서 볼때마다 언제 크나 싶어도 꾸준히 선인장이 자라고 있다. )

by 금메달.아빠 on 2010. 9. 9. 07:49