Шаг 137 - Исследуем сеть (WNetOpenEnum, WNetCloseEnum)

При программировании данной задачи в Windows 98 можно использовать функции Windows Networking (WNet), что мы с Вами и сделаем. Все начинается с функции WNetOpenEnum. Эта функция отрывает указатель, с помощью которого можно изучать сеть. Давайте ее посмотрим.

DWORD WNetOpenEnum
(  
	DWORD dwScope,			// определяет возможности перечисления
	DWORD dwType,			// тип ресурса для перечисления
	DWORD dwUsage,			// тип использования для перечисления
	LPNETRESOURCE lpNetResource,	// структура для информации о ресурсу
	LPHANDLE lphEnum			// указатель на перечислитель
);

Давайте посмотрим параметры dwScope:

Следующий флаг - это dwType:

Флаг dwUsage используется только при перечислении всех ресурсов:

Если lpNetResource равен нулю, то для перечисления будет начинаться с самого верха сети. В другом случае этот параметр должен быть заполнен. При успешном выполнении функция вернет NO_ERROR.

После использования указатель на перечислитель lphEnum должен быть закрыт с помощью функции:

DWORD WNetCloseEnum
(  
	HANDLE hEnum	// указатель на перечислитель
);

В случае успеха функция вернет NO_ERROR. Вот пример кода для начала перечисления.

void CEasyEnumNetResourceAbstract::OpenEnum()
{
	dwResult = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hEnum); 
	if (dwResult != NO_ERROR)
		throw CString("Error OpenEnum");
	GetResource();
	dwResult = WNetCloseEnum(hEnum);
	if (dwResult != NO_ERROR)
		throw CString("Error OpenEnum");
}

Все, что нужно здесь - это указатель на перечислитель:

class CEasyEnumNetResourceAbstract  
{
	......
	DWORD 		dwResult;		// для результата
	HANDLE 		hEnum;		// указатель на ресурсы
	LPNETRESOURCE	netRc;
	......
};

Функция GetResource специально сделана внутри функции OpenEnum для получения функционального замыкания. В этом классе она виртуальная и не имеем кода. В следующем шаге будет проект с полными кодами функций так что не волнуйтесь про реализацию. А сейчас главное это понять принцип. Открыли перечисление здесь нужно указать типы ресурсов и с какого места в сети мы будет их перечислять. Потом что-то перечислили и закрыли.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.08.2001