ERROR_MORE_DATA这种错误一般见于输入的参数是另一个参数的缓冲区大小,而这个参数太小了的话,就会造成这个错误ERROR_MORE_DATA,因此可以用循环来判断是否超过了缓冲区的大小。
如:
/* Get user name */
do
{
if (UserNameLength > 0)
{
HeapFree(GetProcessHeap(), 0, UserName);
UserName = (LPTSTR)HeapAlloc(GetProcessHeap(), 0, (UserNameLength+1) * sizeof(TCHAR));
if (!UserName)
{
LI_INFOPRINT(TEXT("HeapAlloc() failed\n"));
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
dwReturn=UP_LUP_CREATESPACEFAIL_ERROR;
goto cleanup;
}
}
if (DomainLength > 0)
{
HeapFree(GetProcessHeap(), 0, Domain);
Domain = (LPTSTR)HeapAlloc(GetProcessHeap(), 0, (DomainLength+1) * sizeof(TCHAR));