사용자 상호 작용 요청
Dot11ExtIhvInitAdapter를 호출한 후 언제든지 IHV 확장 DLL은 Dot11ExtSendUIRequest 함수를 호출하여 사용자와의 상호 작용을 요청할 수 있습니다. 운영 체제는 요청을 처리하고 사용자에게 적절한 UI(사용자 인터페이스) 페이지를 표시하는 IHV UI 확장 DLL에 모든 사용자 상호 작용 요청을 전달합니다.
요청이 완료되면 운영 체제에서 Dot11ExtIhvProcessUIResponse 함수를 호출하여 사용자 상호 작용을 위해 IHV UI 확장 DLL의 결과를 전달합니다. IHV UI 확장 DLL에 대한 자세한 내용은 Native 802.11 IHV UI Extensions DLL을 참조하세요.
예를 들어 IHV 확장 DLL은 다음 중 하나라도 사용자 상호 작용을 요청할 수 있습니다.
사전 또는 사후 연결 작업의 단계에 대해 사용자에게 알립니다.
연결 후 작업 중에 인증을 위해 자격 증명을 입력하라는 메시지를 사용자에게 표시합니다.
Dot11ExtSendUIRequest 함수를 호출하면 IHV 확장 DLL은 DOT11EXT_IHV_UI_REQUEST 구조체에 대한 포인터를 pIhvUIRequest 매개 변수에 전달합니다. DOT11EXT_IHV_UI_REQUEST 구조는 이 요청을 처리할 대상 UI 페이지의 CLSID(COM 클래스 ID)뿐만 아니라 UI 요청을 식별하는 GUID(Globally Unique ID)와 같은 요청을 지정합니다.
IHV UI 확장 DLL이 사용자 알림을 완료하면 운영 체제에서 Dot11ExtIhvProcessUIResponse 함수를 호출합니다. 사용자가 알림을 통해 데이터를 입력한 경우 운영 체제는 데이터가 포함된 버퍼에 대한 포인터를 pvResponseBuffer 매개 변수에 전달합니다.
운영 체제는 보류 중인 알림 요청의 상태를 주기적으로 쿼리할 수 있습니다. 이 경우 운영 체제는 Dot11ExtIhvIsUIRequestPending을 호출하고 UI 요청의 GUID를 guidUIRequest 매개 변수에 전달합니다.
Dot11ExtSendUIRequest를 호출할 때 IHV 확장 DLL은 다음 지침을 따라야 합니다.
IHV 확장 DLL은 Dot11ExtSendUIRequest에 대한 호출을 serialize할 필요가 없습니다. DLL은 언제든지 둘 이상의 보류 중인 UI 요청을 가질 수 있습니다.
특정 GUID에 대한 UI 요청은 해당 GUID에 대해 Dot11ExtIhvProcessUIResponse 가 호출되는 경우에만 완료됩니다. 이 경우 IHV 확장 DLL은 Dot11ExtIhvProcessUIResponse 가 호출될 때까지 UI 요청에 할당된 리소스를 해제해서는 안 됩니다.
Dot11ExtIhvAdapterReset 또는 Dot11ExtIhvDeinitAdapter가 호출될 때마다 보류 중인 모든 UI 요청이 취소됩니다. uEventType 매개 변수가 WTS_SESSION_LOGOFF 설정된 상태에서 Dot11ExtIhvProcessSessionChange가 호출될 때마다 보류 중인 모든 UI 요청도 취소됩니다.
이러한 경우 IHV 확장 DLL은 보류 중인 각 UI 요청에 대해 할당된 모든 리소스를 해제해야 합니다.
운영 체제는 BSS(기본 서비스 집합) 네트워크에서 연결 상태가 변경 될 때마다 사용자 상호 작용 자체를 시작할 수 있습니다. 이 경우 운영 체제는 Dot11ExtIhvQueryUIRequest 함수를 호출합니다. IHV 확장 DLL은 버퍼를 할당하고 DOT11EXT_IHV_UI_REQUEST 구조로 형식을 지정합니다. DLL은 연결 상태 변경에 적합한 UI 페이지를 참조하도록 DOT11EXT_IHV_UI_REQUEST 구조체의 멤버를 설정합니다. 운영 체제는 UI 페이지를 표시해야 합니다.
참고 IHV 확장은 Dot11ExtAllocateBuffer를 통해 DOT11EXT_IHV_UI_REQUEST 구조를 포함하는 버퍼를 할당해야 합니다. DLL은 Dot11ExtIhvQueryUIRequest에서 반환된 후 버퍼를 해제해서는 안됩니다.