윈도우 환경에서 프로그램을 만들다보면 긴 이름을 제대로 인식하지 못하는 경우를 종종 마주칠 수 있다.
물론, 대부분의 경우는 그럭저럭 우회가 가능하다.
특정 버전 이전의 윈도우에서는 레지스트리에 값을 기록하고, 파일명 앞에 \\?\를 붙이는 것으로서 해결이 가능하다.
하지만, 좀 더 복잡한 상황이 되면 얘기가 달라진다.
Shell Path Handling Function들의 경우 관련 구조체에 MAX_PATH로 정의되어있는 값들이 있다.
예컨데, 아래와 같은 구조체가 이미 정의되어있기 때문에 파일 탐색 등에서는 근본적인 해결이 쉽지 않다.
typedef struct _WIN32_FIND_DATAW {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
WCHAR cFileName[MAX_PATH];
WCHAR cAlternateFileName[14];
DWORD dwFileType; // Obsolete. Do not use.
DWORD dwCreatorType; // Obsolete. Do not use
WORD wFinderFlags; // Obsolete. Do not use
} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
팟플레이어 역시 같은 문제가 있어 개발자에게 문의를 하였으나, 해결이 불가능하다는 답을 받았다.
단순하게 파일을 읽고 재생하는 것뿐만 아니라 자막 파일을 탐색하는 등의 작업이 필요하기 때문에 해결이 불가능한 것.