WNnetOpenEnum выделывается :-(
От: Petrowich Украина  
Дата: 20.10.01 09:06
Оценка:
Помогите! При вызове WNetOpenEnum структура NETRESOURCE заполняется нулями (а должна инфой о сетевых ресурсах!:( ). Что я делаю не так? :-) Причём эта хрень работает одинаково(т.е. не работает) и под BC++5.02, и под CBuilder`ом
Petrowich
Re: WNnetOpenEnum выделывается :-(
От: Alex Fedotov США  
Дата: 20.10.01 15:11
Оценка:
Здравствуйте Petrowich, Вы писали:

P>Помогите! При вызове WNetOpenEnum структура NETRESOURCE заполняется нулями (а должна инфой о сетевых ресурсах!:( ). Что я делаю не так? :-) Причём эта хрень работает одинаково(т.е. не работает) и под BC++5.02, и под CBuilder`ом


Структура NETRESOURCE является для WNetOpenEnum входным параметром, в нем она ожидает увидеть контейнер для перечисления. Фактическое перечисление сетевых ресурсов осуществляется функцией WNetEnumResource.

В любом случае — код в студию, пожалуйста.
-- Alex Fedotov
Re: WNnetOpenEnum выделывается :-(
От: migel  
Дата: 20.10.01 16:04
Оценка:
Здравствуйте Petrowich, Вы писали:

P>Помогите! При вызове WNetOpenEnum структура NETRESOURCE заполняется нулями (а должна инфой о сетевых ресурсах!:( ). Что я делаю не так? :-) Причём эта хрень работает одинаково(т.е. не

работает) и под BC++5.02, и под CBuilder`ом

Вот работчий пример... (читайте MSDN :-)

{
NETRESOURCE *const pNetResource = NULL;
//
//Setup
//
DWORD dwResult;
HANDLE hEnum;
DWORD cbBuffer = 16384;
DWORD cEntries = 0xFFFFFFFF;
LPNETRESOURCE lpnrDrv;
DWORD i;
dwResult = WNetOpenEnum(RESOURCE_CONTEXT,
RESOURCETYPE_ANY,//RESOURCETYPE_DISK,
0,
NULL, &hEnum );
//Was the read sucessfull
if (dwResult != NO_ERROR)
{
TRACE( _T("*** ERROR %d — Cannot enumerate network drives.\n"), dwResult );
return false;
}

do
{
lpnrDrv = (LPNETRESOURCE) GlobalAlloc( GPTR, cbBuffer );
dwResult = WNetEnumResource( hEnum, &cEntries, lpnrDrv, &cbBuffer );
if (dwResult == NO_ERROR)
{
//Scann through the results
for( i = 0; i < cEntries; i++ )
{
// тут берем данные об узле сети
}
}
GlobalFree( (HGLOBAL) lpnrDrv );
if( dwResult != ERROR_NO_MORE_ITEMS && dwResult != NO_ERROR)
{
TRACE( _T("*** ERROR %d — Cannot complete network drive enumeration\n"), dwResult );
break;
}
}while( dwResult != ERROR_NO_MORE_ITEMS );
WNetCloseEnum(hEnum);
}
Насчет оптимальности использования памяти канешна не пример, но сетку шукает помаленьку Ж-)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.