Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с функцией NetQueryDisplayInformation

13K
25 декабря 2005 года
LenaU
9 / / 25.12.2005
Здравствуйте.
Я использую функцию NetQueryDisplayInformation для построения списка рабочих групп и для вывода его в окно ListBoxа. Проблема заключается в том, что при вызове функции переменная dwRec принимает значение, равное еденице. Хотя групп на компьютере больше 10. Выводится всего одна группа,в поле имя записывается слово "Отсутствует". Подскажите, пожалуйста, почему так происходит, и как это исправить. Когда я использую ту же функцию для построения списка пользователей, то все работает.

void GroupList(HWND hListBox)
{
//получаем список всех пользователей
PNET_DISPLAY_GROUP pBuff, p;
DWORD res, dwRec, i = 0;
char s[256] ;
char tVECTOR_USER[100][256];
char VECTOR_USER[100][256];

int r, t;
do
{
res = NetQueryDisplayInformation(NULL, 3, i, 1000, MAX_PREFERRED_LENGTH, &dwRec, (PVOID*)&pBuff);
if((res==ERROR_SUCCESS) || (res==ERROR_MORE_DATA))
{
p = pBuff;
for (;dwRec>0;dwRec--)
{
WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)pBuff->grpi3_name , -1,VECTOR_USER[dwRec], 256, NULL, NULL );
SendMessage(hListBox,LB_ADDSTRING,NULL,(LPARAM)VECTOR_USER[dwRec]);
i = pBuff->grpi3_next_index;
p++;
}
NetApiBufferFree(pBuff);
}
else
{
MessageBox(NULL,"Невозможно построить список рабочих групп","Ошибка",MB_OK|MB_ICONERROR);
exit(1);
}
} while (res == ERROR_MORE_DATA);

}
243
26 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by LenaU
 
Код:
res = NetQueryDisplayInformation(NULL, 3, i, 1000, MAX_PREFERRED_LENGTH, &dwRec, (PVOID*)&pBuff);
      if((res==ERROR_SUCCESS) || (res==ERROR_MORE_DATA))
      {
........................

}


Сдается мне, что все дело в 4-ом параметре:

Цитата:
EntriesRequested
[in] Specifies the maximum number of entries for which to retrieve information. On Windows 2000 and later, each call to NetQueryDisplayInformation returns a maximum of 100 objects.


Т.е. там не должно быть числа больше 100. А у вас 1000. На ошибки желательно проверять не через res==ERROR_SUCCESS, а через res==NERR_Success. Хотя смысл от этого не меняется - что там, что там 0, но в данном контексте более удобочитаемо.

13K
26 декабря 2005 года
LenaU
9 / / 25.12.2005
[QUOTE]Originally posted by pacific_7
Сдается мне, что все дело в 4-ом параметре:



Спасибо за ответ. Но от того что я вместо 1000 написала 100, абсолютно ничего не изменилось:( Что у меня еще не так??
292
26 декабря 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by LenaU
Что у меня еще не так??



Да вроде все так. Примерчик же из МСДН.
У них в примере как раз 1000 и поставлена. Но не в этом дело.

Там еще чего-то с правами.
Пробывал настроить привелегии с разными параметрами. Ни к чему не привело. Может чего еще нашаманю

243
27 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by LenaU
[QUOTE]Originally posted by pacific_7
Сдается мне, что все дело в 4-ом параметре:



Спасибо за ответ. Но от того что я вместо 1000 написала 100, абсолютно ничего не изменилось:( Что у меня еще не так??


Ммм... Сегодня (т.е. уже вчера) совершенно не было времени. Если получится, то завтра вечером может чего намалякаю.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог