res = NetQueryDisplayInformation(NULL, 3, i, 1000, MAX_PREFERRED_LENGTH, &dwRec, (PVOID*)&pBuff);
if((res==ERROR_SUCCESS) || (res==ERROR_MORE_DATA))
{
........................
Проблемы с функцией NetQueryDisplayInformation
Я использую функцию 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);
}
Цитата:
Originally posted by LenaU
}
Код:
}
Сдается мне, что все дело в 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.
[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, но в данном контексте более удобочитаемо.
Сдается мне, что все дело в 4-ом параметре:
Спасибо за ответ. Но от того что я вместо 1000 написала 100, абсолютно ничего не изменилось:( Что у меня еще не так??
Цитата:
Originally posted by LenaU
Что у меня еще не так??
Что у меня еще не так??
Да вроде все так. Примерчик же из МСДН.
У них в примере как раз 1000 и поставлена. Но не в этом дело.
Там еще чего-то с правами.
Пробывал настроить привелегии с разными параметрами. Ни к чему не привело. Может чего еще нашаманю
Цитата:
Originally posted by LenaU
[QUOTE]Originally posted by pacific_7
Сдается мне, что все дело в 4-ом параметре:
Спасибо за ответ. Но от того что я вместо 1000 написала 100, абсолютно ничего не изменилось:( Что у меня еще не так??
[QUOTE]Originally posted by pacific_7
Сдается мне, что все дело в 4-ом параметре:
Спасибо за ответ. Но от того что я вместо 1000 написала 100, абсолютно ничего не изменилось:( Что у меня еще не так??
Ммм... Сегодня (т.е. уже вчера) совершенно не было времени. Если получится, то завтра вечером может чего намалякаю.