Stefan Leichter <[email protected]> writes: > /****************************************************************** > + * QueryFullProcessImageNameA (KERNEL32.@) > + */ > +BOOL WINAPI QueryFullProcessImageNameA(HANDLE hProcess, DWORD dwFlags, LPSTR > lpExeName, PDWORD pdwSize) > +{ > + BOOL retval; > + DWORD pdwSizeW = *pdwSize; > + LPWSTR lpExeNameW = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, > *pdwSize * sizeof(WCHAR)); > + > + retval = QueryFullProcessImageNameW(hProcess, dwFlags, lpExeNameW, > &pdwSizeW); > + > + if(retval) { > + if(lpExeName) > + *pdwSize = FILE_name_WtoA(lpExeNameW, pdwSizeW, lpExeName, > *pdwSize); > + else { > + /* this is a difference between the acsii and the unicode > version (vista) > + * the unicode version crashes when the size is big enough to > hold the result > + * ascii version throughs an error > + */ > + retval = FALSE; > + SetLastError(ERROR_INVALID_PARAMETER); > + } > + }
I'd expect that error to be a side effect of WideCharToMultiByte, which is most likely what you want to use here. Also you have to handle buffer overflows correctly, with test cases. -- Alexandre Julliard [email protected]
