BOOL CFileListControl::GetFileListDirectoryPath(PTCHAR *szDirPath, const DWORD dwSize)
{
BOOL bRet = FALSE; if(dwSize && IsBadWritePtr((PTCHAR)*szDirPath, dwSize) != FALSE)
{
bRet = SHGetSpecialFolderPath(NULL, (PTCHAR)*szDirPath, CSIDL_PERSONAL, FALSE); if(bRet)
{
}
} return bRet;
}我这样调用
TCHAR szPath[MAX_PATH] = {0};
if(GetFileListDirectoryPath((PTCHAR*)&szPath, sizeof(szPath)))
{
}
但是在SHGetSpecialFolderPath报szDirPath内存出错?怎么回事????

解决方案 »

  1.   

    &szPath是const PTCHAR*,不是PTCHAR*,你要用,得这样TCHAR* pStr = &szPath[0];
    GetFileListDirectoryPath((PTCHAR*)&pStr, sizeof(szPath))) 
      

  2.   

    &szPath应该没问题吧,对数组来说&szPath[0]和&szPath是等价的吧。是不是sizeof(szPath)有问题,因为szPath是TCHAR类型的,所以sizeof(szPath)是2×MAX_PATH,最后造成越界?仅供参考
      

  3.   

    二楼犯了一个错误&szPath是const PTCHAR*,不是PTCHAR*,你要用,得这样 TCHAR* pStr = &szPath[0]; 
    GetFileListDirectoryPath((PTCHAR*)pStr, sizeof(szPath)))  
      

  4.   

    解决,但是不知道为什么?
    谁能告诉我?BOOL GetFileListDirectoryPath(PTCHAR szDirPath, const DWORD dwSize) 

    BOOL bRet = FALSE; bRet = SHGetSpecialFolderPath(NULL, (PTCHAR)szDirPath, CSIDL_PERSONAL, FALSE); return bRet; 
      

  5.   

    怀疑是不是#define TCHAR* PTCHAR
      

  6.   

    请教4楼,const PTCHAR*,和PTCHAR*如果编译器没报错的话就无所谓吧?