На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > InternetQueryOption валится , GetLastError возвращает бред вида 0x5d4d39a2
      Есть такой код:
      ExpandedWrap disabled
        DWORD foo()
            HINTERNET hSession = ::InternetOpen(_T("User Agent"),
                                                INTERNET_OPEN_TYPE_PRECONFIG,
                                                NULL, NULL, 0);
            if ( !hSession )
            {
                 return FALSE;
            }
         
            DWORD dwFlags = 0;
            DWORD size = sizeof( DWORD );
         
                if (
             !::InternetQueryOption( hSession, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, &size )
                 )
                 return ::GetLastError();
         
          return 0;
        }

      InternetQueryOption почему-то валится, причём GetLastError всегда возвращает что-то новое и необычное. :unsure:
        MichSpar, а с какой целью в InternetQueryOption передаешь для запроса INTERNET_OPTION_SECURITY_FLAGS корневой HINTERNET-дескриптор?
        Насколько разумею, INTERNET_OPTION_SECURITY_FLAGS подразумевает параметры безопасности для конкретного соединения с конкретным объектом, а не всего использования WinInet программой.
        Т.е. при запросе INTERNET_OPTION_SECURITY_FLAGS InternetQueryOption ожидает дескриптор возвращенный чем-то вроде HttpOpenRequest(..., "GET", "forum.sources.ru/index.php", ...)
          С целью установить в последствии флаг SECURITY_FLAG_IGNORE_REVOCATION и вызова InternetOpenUrl:
          ExpandedWrap disabled
                        dwFlags = dwFlags | SECURITY_FLAG_IGNORE_REVOCATION;
             
                        if ( !::InternetSetOption( hSession, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, size ) )
                            printf( _T( "Warning: failed to set SECURITY_FLAG_IGNORE_REVOCATION: %x", ::GetLastError() ) );
                HINTERNET hUrl = ::InternetOpenUrl (
                    hSession, url, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_UI | INTERNET_FLAG_NO_CACHE_WRITE, 0 );

          вызов InternetSetOption тоже, кстати, падает с такими же случайными кодами ошибок.
            Насколько понимаю InternetQueryOption и InternetSetOption для INTERNET_OPTION_SECURITY_FLAGS нужно вызывать с первым параметром hUrl = ::InternetOpenUrl(...), а не корневым дескриптором.
              arj99, ты прав. Спасибо :)
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0.0761 ]   [ 16 queries used ]   [ Generated: 6.07.26, 03:22 GMT ]