GetPrivateProfileString 这个函数是怎么写的?
我想知道 GetPrivateProfileString 这个 API 函数是怎么写的,
不是要这个函数的使用代码哦,, 是要这个函数的代码....
[解决办法]
/***********************************************************************
* GetPrivateProfileStringA (KERNEL32.@)
*/
DWORD WINAPI GetPrivateProfileStringA( LPCSTR section, LPCSTR entry,
LPCSTR def_val, LPSTR buffer,
DWORD len, LPCSTR filename )
{
UNICODE_STRING sectionW, entryW, def_valW, filenameW;
LPWSTR bufferW;
INT retW, ret = 0;
bufferW = buffer ? HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)) : NULL;
if (section) RtlCreateUnicodeStringFromAsciiz(§ionW, section);
else sectionW.Buffer = NULL;
if (entry) RtlCreateUnicodeStringFromAsciiz(&entryW, entry);
else entryW.Buffer = NULL;
if (def_val) RtlCreateUnicodeStringFromAsciiz(&def_valW, def_val);
else def_valW.Buffer = NULL;
if (filename) RtlCreateUnicodeStringFromAsciiz(&filenameW, filename);
else filenameW.Buffer = NULL;
retW = GetPrivateProfileStringW( sectionW.Buffer, entryW.Buffer,
def_valW.Buffer, bufferW, len,
filenameW.Buffer);
if (len)
{
ret = WideCharToMultiByte(CP_ACP, 0, bufferW, retW + 1, buffer, len, NULL, NULL);
if (!ret)
{
ret = len - 1;
buffer[ret] = 0;
}
else
ret--; /* strip terminating 0 */
}
RtlFreeUnicodeString(§ionW);
RtlFreeUnicodeString(&entryW);
RtlFreeUnicodeString(&def_valW);
RtlFreeUnicodeString(&filenameW);
HeapFree(GetProcessHeap(), 0, bufferW);
return ret;
}
/***********************************************************************
* GetPrivateProfileStringW (KERNEL32.@)
*/
DWORD WINAPI GetPrivateProfileStringW( LPCWSTR section, LPCWSTR entry,
LPCWSTR def_val, LPWSTR buffer,
DWORD len, LPCWSTR filename )
{
DPRINT( "(%S, %S, %S, %p, %d, %S)\n ",
section, entry, def_val, buffer, len, filename);
return PROFILE_GetPrivateProfileString( section, entry, def_val,
buffer, len, filename, TRUE );
}