E_INVALIDARG в CoInitializeSecurity()

Тема в разделе "WASM.WIN32", создана пользователем verelex, 16 фев 2009.

  1. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Код (Text):
    1.     // Initialize COM
    2.     HRESULT hres = CoInitializeEx(0, COINIT_MULTITHREADED);
    3.     if (FAILED(hres))
    4.     {
    5.         return 1; // Program has failed.
    6.     }
    7.     // Set general COM security levels --------------------------
    8.     // Note: If you are using Windows 2000, you need to specify -
    9.     // the default authentication credentials for a user by using
    10.     // a SOLE_AUTHENTICATION_LIST structure in the pAuthList ----
    11.     // parameter of CoInitializeSecurity ------------------------
    12.     hres =  CoInitializeSecurity(
    13.         NULL,
    14.         -1,                          // COM authentication
    15.         NULL,                        // Authentication services
    16.         NULL,                        // Reserved
    17.         RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
    18.         RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation  
    19.         0,                   // Authentication info <<<<<<<<<----------------------
    20.         EOAC_NONE,                   // Additional capabilities
    21.         NULL                         // Reserved
    22.         );
    23.     if (FAILED(hres))
    24.     {
    25.         CoUninitialize();
    26.         return 1; // Program has failed.
    27.     }
    На WinXP этот код работает нормально.
    Если запусить под 2000, то не пашет.
    когда пытаюсь в xp:
    Код (Text):
    1.     // for win 2k:
    2.     SOLE_AUTHENTICATION_INFO   sai;
    3.     sai.dwAuthnSvc = RPC_C_AUTHN_DEFAULT;
    4.     sai.dwAuthzSvc = RPC_C_AUTHZ_DEFAULT;
    5.     sai.pAuthInfo = 0;
    6.     SOLE_AUTHENTICATION_LIST   AuthList;
    7.     AuthList.aAuthInfo = &sai;
    8.     AuthList.cAuthInfo = 1;
    9.     // nxt
    10.     hres =  CoInitializeSecurity(
    11.         NULL,
    12.         -1,                          // COM authentication
    13.         NULL,                        // Authentication services
    14.         NULL,                        // Reserved
    15.         RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
    16.         RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation  
    17.         &AuthList,                   // Authentication info <<<<<<<<<----------------------
    18.         EOAC_NONE,                   // Additional capabilities
    19.         NULL                         // Reserved
    20.         );
    возвращает E_INVALIDARG
    Что я сделал не верно? или для разных виндовозов надо по разному?