:: Архив конференции по VFP до 2005 года
Вызов NetGroupGetUsers
Oleg Tarasov
Автор
Подскажите, как вызвать функцию API NetGroupGetUsers?
Объявляю ее - DECLARE INTEGER NetGroupGetUsers IN netapi32
Затем, когда пытаюсь с ней обратится - вываливается соощение об ошибке - Too many arguments.

В чем ошибка. Если можно, приведите пример вызова.

Ratings: 0 negative/0 positive
RE: Вызов NetGroupGetUsers
Sergey Titow

Сообщений: 2242
Дата регистрации: 12.09.2000
Первая ошибка - не видно описания параметров
Теперь - как их описывать. Про NetGroupGetUsers сказано следующее:
NET_API_STATUS NetGroupGetUsers(
LPWSTR servername,
LPWSTR groupname,
DWORD level,
LPBYTE *bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
LPDWORD resumeHandle
);
Значит будет примерно так:
NET_API_STATUS - скорее всего это действительно INTEGER
LPWSTR - длинный указатель на строку - STRING @. Правда есть два НО:
1. Это NT, может надо преобразовать строку в unicode
2. Нужна null-terminated string, в конце надо добавить chr(0)
DWORD - в явном виде INTEGER
LPBYTE * - длинный указатель на строку (последовательность байт), причем значение - возвращаемое. Ставим INTEGER @. После вызова получим указатель. Для получения собственно строки - нужны дополнительные махинации
LPDWORD - длинный указатель на двойное слово - INTEGER @

В результате:
DECLARE INTEGER NetGroupGetUsers IN netapi32 ;
STRING @servername, ;
STRING @groupname, ;
INTEGER level, ;
INTEGER @bufptr, ;
INTEGER prefmaxlen, ;
INTEGER @entriesread, ;
INTEGER @totalentries, ;
INTEGER @resumeHandle

Перед вызовом надо проинициализировать все переменные соответствующими значениями

И ВНИМАНИЕ!
Буфер должен быть освобожден с помощью NetApiBufferFree

Ratings: 0 negative/0 positive
RE: Вызов NetGroupGetUsers
Sergey Titow

Сообщений: 2242
Дата регистрации: 12.09.2000
Уточнение
> LPBYTE * - длинный указатель на строку
Следует читать:
LPBYTE * - длинный указатель на длинный указатель на строку
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 8 (Гостей: 8)

© 2000-2024 Fox Club 
Яндекс.Метрика