![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Active Directory и функция ADsGetObject [D7, Win2k]
Yr2 © (2004-10-22 21:14:00)Мастера, кто-нибудь работал с MS Active Directory из Delphi?
Все функции работы с Active Dir находятся в C:\WINNT\system32\activeds.dll (для Windows 2000); интерфейсы описываются в activeds.tlb. Но вся работа начинается с функции ADsGetObject, которая в MSDN_е описывается только для Cи (и есть вариант для бейсика). Пытаюсь использовать эту функцию в Delphi следующим образом:
объявляю как
function ADsGetObject(
lpszPathName : LPWSTR;
riid : TGUID;
var ppObject
): HRESULT; stdcall; external 'ActiveDs.dll';
причем в документации на Си она выглядит так:
HRESULT ADsGetObject(
LPWSTR lpszPathName,
REFIID riid,
VOID** ppObject
);
и в результате запуска она всегда мне возвращает ошибку (т.е. ненулевое значение)...
может быть такое, что функция ДЛЛ-ки вообще не предназначена для запуска из Delphi??? (это мне такое мнение высказал один сотрудник)
А в общем, мне нужно получать параметры пользователей из Active Dir.
Юрий Зотов (2004-10-22 22:25:00) [1]> может быть такое, что функция ДЛЛ-ки вообще не предназначена
> для запуска из Delphi???
А разве функция DLL знает, откуда ее вызывают? Не знает, и ей это глубоко по барабану.
Ее вызывают из двоичного кода, а каким уж там компилятором он был получен - какая разница? Лишь бы вызов был правильным, вот и все.
Yr2 (2004-10-22 22:15:00) [2]вот елки... а все дело было в том, что ставить нужно не stdcall, а safecall.