WZCEnumInterfaces 関数
[WZCEnumInterfaces は、Windows Vista および Windows Server 2008 以降ではサポートされていません。 代わりに、 WlanEnumInterfaces 関数を 使用します。 詳細については、「 ネイティブ Wifi API について」を参照してください。
WZCEnumInterfaces 関数は、ワイヤレス ゼロ構成サービスによって管理されているすべてのワイヤレス LAN インターフェイスを列挙します。
構文
DWORD WZCEnumInterfaces(
_In_ LPWSTR pSrvAddr,
_Out_ PINTFS_KEY_TABLE pIntfs
);
パラメーター
-
pSrvAddr [in]
-
この関数を実行するコンピューターの名前を含む文字列へのポインター。 このパラメーターが NULL の場合、ワイヤレス ゼロ構成サービスはローカル コンピューターに列挙されます。
指定された pSrvAddr パラメーターがリモート コンピューターの場合、リモート コンピューターはリモート RPC 呼び出しをサポートする必要があります。
-
pIntfs [out]
-
すべてのインターフェイスのキー情報のテーブルを含む INTFS_KEY_TABLE 構造体へのポインター。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は次のいずれかのリターン コードになります。
リターン コード | 説明 |
---|---|
|
ストレージ制御ブロックが破棄されました。 このエラーは、ワイヤレス ゼロ構成サービスが内部オブジェクトを初期化していない場合に返されます。 |
|
インターフェイスは不明です。 このエラーは、ワイヤレス ゼロ構成サービスが開始されていない場合に返されます。 |
|
null 参照ポインターがスタブに渡されました。 このエラーは、 pIntfs パラメーターが NULL の場合に返されます。 |
|
この要求を処理し、クエリ結果のメモリを割り当てるのに十分なメモリがありません。 |
|
さまざまなエラー コード。 |
解説
pIntf が指すINTFS_KEY_TABLE構造体の dwNumIntfs メンバーは、WZCEnumInterfaces 関数を呼び出す前に 0 に設定する必要があります。 また、 pIntfs メンバーを NULL に設定する必要があります。
その後、他のワイヤレス ゼロ構成関数を呼び出す場合、アプリケーションは 、WZCEnumInterfaces 関数によって返される関連するキー情報を提供することによって、動作しているインターフェイスを識別する必要があります。
WZCEnumInterfaces がERROR_SUCCESSを返す場合、呼び出し元は LocalFree を呼び出して、この情報が不要になったら、返されるデータに割り当てられた内部バッファーを解放する必要があります。
注意
Wzcsapi.h ヘッダー ファイルと Wzcsapi.lib インポート ライブラリ ファイルは、Windows SDK では使用できません。
例
次の例では、ワイヤレス ゼロ構成サービスによって管理されているローカル コンピューター上のワイヤレス LAN インターフェイスを列挙し、各インターフェイスのインターフェイス GUID の値を出力します。
注意
この例は、Windows Vista 以降では失敗します。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <objbase.h>
#include <wtypes.h>
#include <stdio.h>
#include <stdlib.h>
// Wzcsapi.h and Wsczapi.lib were never shipped
// So we need to LOadlibrary and call the WZCEnumInterfaces function
// in Wzcsapi.dll in the
typedef struct
{
LPWSTR wszGuid;
} INTF_KEY_ENTRY, *PINTF_KEY_ENTRY;
typedef struct
{
DWORD dwNumIntfs;
PINTF_KEY_ENTRY pIntfs;
} INTFS_KEY_TABLE, *PINTFS_KEY_TABLE;
DWORD WZCEnumInterfaces(LPWSTR pSrvAddr, PINTFS_KEY_TABLE pIntfs);
//Define the function prototype
typedef DWORD (CALLBACK* WZCEnumInterfacesType)(LPWSTR, PINTFS_KEY_TABLE);
int wmain()
{
// Declare and initialize variables.
DWORD dwResult = 0;
// int iRet = 0;
// WCHAR GuidString[40] = {0};
int i;
/* variables used for WZCEnumInterfaces */
PINTFS_KEY_TABLE pIfList;
PINTF_KEY_ENTRY pIfInfo;
BOOL freeResult = FALSE;
BOOL runTimeLinkSuccess = FALSE;
HINSTANCE dllHandle = NULL;
WZCEnumInterfacesType WZCEnumInterfacesPtr = NULL;
// wprintf(L"Sample to test WZCEnumInterface\n");
//Load the dll and keep the handle to it
dllHandle = LoadLibrary( (LPCWSTR) L"wzcsapi.dll");
// If the handle is valid, try to get the function address.
if (dllHandle == NULL) {
dwResult = GetLastError();
wprintf(L"LoadLibrary of wzcsapi.dll failed with error: %d\n", dwResult);
if (dwResult == ERROR_MOD_NOT_FOUND)
wprintf(L"Error: The specified module could not be found\n");
return 1;
}
else
{
//Get pointer to our function using GetProcAddress:
WZCEnumInterfacesPtr = (WZCEnumInterfacesType) GetProcAddress(dllHandle,
"WZCEnumInterfaces");
if (WZCEnumInterfacesPtr != NULL)
runTimeLinkSuccess = TRUE;
else {
dwResult = GetLastError();
wprintf(L"GetProcAddress of WZCEnumInterfaces failed with error: %d\n", dwResult);
return 1;
}
// The function address is valid, allocate some memory for pIflist
pIfList = (PINTFS_KEY_TABLE) LocalAlloc(LMEM_ZEROINIT,4096);
if (pIfList == NULL) {
wprintf(L"Unable to allocate memory to store INTFS_KEY_TABLE\n");
freeResult = FreeLibrary(dllHandle);
return 1;
}
// If the function address is valid, call the function.
if (runTimeLinkSuccess)
{
dwResult = WZCEnumInterfacesPtr(NULL, pIfList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WZCEnumInterfaces failed with error: %u\n", dwResult);
// FormatMessage can be used to find out why the function failed
//Free the library:
freeResult = FreeLibrary(dllHandle);
return 1;
}
else {
wprintf(L"Num Entries: %lu\n", pIfList->dwNumIntfs);
for (i = 0; i < (int) pIfList->dwNumIntfs; i++) {
pIfInfo = &pIfList->pIntfs[i];
if (pIfInfo->wszGuid == NULL)
wprintf(L" InterfaceGUID[%d]: NULL\n",i);
else
wprintf(L" InterfaceGUID[%d]: %ws\n",i, pIfInfo->wszGuid);
}
}
wprintf(L"\n");
}
freeResult = FreeLibrary(dllHandle);
}
if (pIfList != NULL) {
LocalFree(pIfList);
pIfList = NULL;
}
return 0;
}
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
WINDOWS XP と SP2 [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |
クライアント サポートの終了 |
Windows XP と SP3 |
サーバー サポートの終了 |
Windows Server 2003 |
ヘッダー |
|
ライブラリ |
|
[DLL] |
|
関連項目