Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 02:24   #1
D][mon
Форумчанин
 
Регистрация: 05.01.2010
Сообщений: 150
По умолчанию wlanapi: остановить Hosted Network

доброго времени суток.
проблема у меня с остановкой hosted network. (c++/cli)

в заголовке объявлена

static HANDLE hClient245;

в дух файлах две функции

Код:
VOID
StartHostedNetwork(
__in int argc,
__in_ecount(argc) LPWSTR argv[]){
	DWORD dwError = ERROR_SUCCESS;
	DWORD dwServiceVersion;
	PWLAN_HOSTED_NETWORK_REASON failReason;
		// open a handle to the service   
		if ((dwError = WlanOpenHandle(
			WLAN_API_VERSION,
			NULL,               // reserved   
			&dwServiceVersion,
			&hClient245
			)) != ERROR_SUCCESS)
		{
			return;
		}

		// check service version   
		if (WLAN_API_VERSION_MAJOR(dwServiceVersion) < WLAN_API_VERSION_MAJOR(WLAN_API_VERSION_2_0))
		{
			printf("Your wlan api version (%i) is outdated...", dwServiceVersion);
			// No-op, because the version check is for demonstration purpose only.   
			// You can add your own logic here.   
		}
		else{
			WlanHostedNetworkStartUsing(hClient245, failReason, NULL);
		}
}
и

Код:
VOID
StopHostedNetwork(
__in int argc,
__in_ecount(argc) LPWSTR argv[]){

	PWLAN_HOSTED_NETWORK_REASON failReason;
	//if (hClient245 != NULL)
	{
		// clean up   
		WlanHostedNetworkStopUsing(hClient245, failReason, NULL);
		WlanCloseHandle(
			hClient245,
			NULL            // reserved   
			);
	}
}
первая работает отлично
а втoрая не работает, более того, если в ней проверить hClient245 на NULL то результат будет TRUE, не смотря ни на что...

ЗюЫю
слезно прошу о помощи, ибо visual c++ взрывает мозГ
D][mon вне форума Ответить с цитированием
Старый 30.10.2013, 10:20   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от D][mon Посмотреть сообщение
static HANDLE hClient245;
Уберите static, иначе у вас в двух разных модулях две разные переменные с одним именем.
waleri вне форума Ответить с цитированием
Старый 30.10.2013, 10:32   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
static HANDLE hClient245;
Стремная конструкция для хедера... Статические переменные будут создаваться в каждом модуле (*.cpp) свои, отсюда и проблемы. Объявляй ее в СРР файле, а в хедере пиши так:

extern HANDLE hClient245;
counter вне форума Ответить с цитированием
Старый 30.10.2013, 21:24   #4
D][mon
Форумчанин
 
Регистрация: 05.01.2010
Сообщений: 150
По умолчанию

Методом тыка определено, что переменная hClient245 создается в каждом модуле своя, однако следующее решение:

Цитата:
Сообщение от counter Посмотреть сообщение
Код:
static HANDLE hClient245;
Стремная конструкция для хедера... Статические переменные будут создаваться в каждом модуле (*.cpp) свои, отсюда и проблемы. Объявляй ее в СРР файле, а в хедере пиши так:

extern HANDLE hClient245;
не помогло.

Буду делать класс, там такой проблемы быть не должно, но всеже, а как исправить проблему без этого?(чисто интересно)
D][mon вне форума Ответить с цитированием
Старый 30.10.2013, 22:43   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Просто убрать static пробовали?
waleri вне форума Ответить с цитированием
Старый 31.10.2013, 13:20   #6
D][mon
Форумчанин
 
Регистрация: 05.01.2010
Сообщений: 150
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Просто убрать static пробовали?
static extern HANDLE hClient245; ???
я рак, но не идиот :-) ессно так не получиться

Последний раз редактировалось D][mon; 31.10.2013 в 13:22.
D][mon вне форума Ответить с цитированием
Старый 31.10.2013, 18:52   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

D][mon, объяви глобальную переменную в *.cpp.
counter вне форума Ответить с цитированием
Старый 31.10.2013, 20:09   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от D][mon Посмотреть сообщение
static extern HANDLE hClient245; ???
я рак, но не идиот :-) ессно так не получиться
Не знаю идиот или нет, реч шла убрать static чтоб получить из "static HANDLE hClient245" просто "HANDLE hClient245"
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зачем нужен NoC(network on a chip) Любопытный человек Компьютерное железо 5 03.07.2012 11:43
USB Network Controller A.K. Помощь студентам 5 12.09.2011 11:38
Qt Network 3dg_fan Помощь студентам 0 30.04.2011 02:17
Network is unreachable Winamp Работа с сетью в Delphi 1 08.01.2010 21:34