void fn(HINTERNET hfile,...){
char *url=new char[3000];
DWORD *len = new DWORD;
if(InternetQueryOption(hFile, INTERNET_OPTION_URL, url, len)==FALSE){
char* tmp=new char[3000];
sprintf(temp, "InternetQueryOption failed!\nError: %d\nRequired bytes: %d\n", GetLastError(),*len);
MessageBox(NULL, tmp, _T("myBHO !!!"), MB_OK | MB_ICONINFORMATION);
delete [] tmp;
}
//....
delete [] url;
delete len;
}
122 (ERROR_INSUFFICIENT_BUFFER)을 반환합니다. 결과는 url []으로, 길이는 len으로 반환됩니다.InternetQueryOption (..) 실패하고 GetLastError() 항상 내가 핸들 HFILE의 URL을 찾는 옵션 <strong>INTERNET_OPTION_URL</strong>와 <strong>InternetQueryOption</strong>()를 사용하고이 함수에서
그러나 항상 함수가 실패하고 GetLastError()은 항상 122 (ERROR_INSUFFICIENT_BUFFER)를 반환합니다.
길이가 3000 인 버퍼를 사용하는 동안 this에 따르면 IE에서 가능한 최대 길이는 2083입니다. 따라서이 오류는 어떻게 가능합니까? 나는 심지어 URL [을으로 만들면서도 여전히 같은 오류가 발생합니다. GetLastError()가 ERROR_INSUFFICIENT_BUFFER를 반환하는 경우
이제 IntenetQueryOption() documentation에 따라, 다음, 요청 된 정보를 유지하는 데 필요한 바이트 수에 변수 렌 포인트 (정보가 URL이 경우입니다). 그리고이 값은 항상 100보다 작습니다. URL은 어떻게 적합합니까? ulr []?
이 이상한 행동의 원인은 무엇일까요? 도와주세요.
'DWORD * len = new DWORD;를 사용하는 대신'DWORD len = 3000;을 수행하고'InternetQueryOption (hFile, INTERNET_OPTION_URL, url, & len)'과 같은 함수를 호출해야합니다. –