2014-09-14 7 views
0

첫 번째 사항은 먼저 고대 기술과 관련이 있습니다. 내가 일하고있는 프로그램 포트는 Metrowerks Codewarrior 9에서 관리되며 대상은 PPC입니다. MSL C의 FSRefParentAndFilename_fopen 기능CFString을 HFSUniStr255로 변환하는 방법?

FILE * FSRefParentAndFilename_fopen(
const FSRefPtr theParentRef, 
ConstHFSUniStr255Param theName, 
const char *open_mode); 

에서 사용하기 위해

은 내가 HFSUniStr255에 대한 포인터입니다 ConstHFSUniStr255Param이 필요합니다. 내 파일 이름이 포함 된 CFString이 있는데, 내 질문은 어떻게 HFSUniStr255로 변환합니까?

struct HFSUniStr255 { 
UInt16 length; 
UniChar unicode[255]; 
}; 

지금까지 내가 가진 :

HFSString.length=(uint16)CFStringGetLength(fileName); 
CFStringGetCharacters(filename, CFRangeMake(0, CFStringGetLength(filename)), HFSString.unicode); 

것은 당신의 파일 이름이 유효한지, 특히 길이가 작다는 것을 그러나 확인 :

HFSUniStr255 HFSString; 
FSGetDataForkName(&HFSString); 
HFSString.length=(uint16)CFStringGetLength(fileName); 
HFSString.unicode=? 

답변

1

당신은 다음 코드를 사용할 수 있습니다 255 자 이상의 유니 코드 문자. 그렇지 않으면 버퍼 오버플로의 결과에 직면해야합니다.