-
Почему если я задаю модель MULTITHREADED, при неверных параметрах, передаваемых в функцию CoInitializeSecurity возвращается некий код ошибки, а именно $80070057 (Imternal Com+ error), а если указана модель APARTMENTTHREADED, то эта функция крешет внутри себя и выдает ошибку Range check error? Я бы хотел и в модели APARTMENTTHREADED получить код ошибки, как и в MULTITHREADED. (там кстати могут быть еще 3 других кода ошибки). Кто может что подсказать?
-
> при неверных параметрах, передаваемых в функцию CoInitializeSecurity
а откуда эти неверные параметры берутся?
-
> а откуда эти неверные параметры берутся?
вводятся ручками. Дело в том, что эти параметры зачитываются из реестра, а там можно ошибочно что угодно указать. И даже более того, параметры то могут быть и в пределах допустимых значений, но на машине может быть заблокирован или отсутствовать тот или другой режим, например не поднят Керберос, а параметр установлен на него. Так вот в MULTITHREADED модели функция вернет некий HRESULT, который я могу обработать и выдать нормальное сообщение, а в APARTMENTTHREADED модели функция крешанет внутри себя и никакого HREsult не вернет, соответственно мне анализировать нечего.
-
> Range check error
а это не дельфийское ли исключение?
-
Вообще то дельфийское, но почему тогда если я устанавливаю перед этим вызовом CoInitializeEx(nil, COINIT_MULTITHREADED) то получаю HRESULT = $80070057, а когда устанавливаю CoInitializeEx(nil, COINIT_APARTMENTTHREADED), то эта функция ничего не возвращает а вылетает по эксепшену Range check error?
-
ну фиг знает... приведи пример такого "кривого" вызова со значениями параметров
-
Дык элементарно:
если так: CoInitializeEx(nil, COINIT_MULTITHREADED); Result := CoInitializeSecurity(nil, 1, nil, nil, 7, 5, nil, 0, nil); if Result <> S_OK then ...
то сработает и выдаст Result = $80070057. (значений 7 и 5 в этих позициях быть не может)
А если так:
CoInitializeEx(nil, COINIT_APARTMENTTHREADED); Result := CoInitializeSecurity(nil, 1, nil, nil, 7, 5, nil, 0, nil); - тут крешанет!!! if Result <> S_OK then ...
-
Так как? Ни у кого никаких соображений больше по этому поводу нет?
-
А зачем ты передаешь cAuthSvc = 1 (Count of entries in asAuthSvc), при этом передавая nil в asAuthSvc???
|