ちょっと変なところがあったので、こそこそ修正しつつ。
仕事場 ( ドメイン環境 ) で試してみたところ、VMware の仮想ネットワークが入っているせいか、うまく取得できないという結果になりました。Offset を取りながらループする、ってコードなんですが、同じデータを取得し続けるようで無限ループに。
なお、VMware の仮想マシンとして構築しているドメイン環境では、無事に NLA_NETWORK_MANAGED が取れました。信頼されてるはずの『ホームネットワーク』やら『社内ネットワーク』は NLA_NETWORK_UNMANAGED。ドメインに参加してるかどうかがポイントになるようです。
あとは、会社の VPN につなぐようなところだとどうなるのかな? ってくらいでしょうか。実際のところ、あんまり使うことはなさそうですし、とりあえず、こんなところで。
どこで使うんだ、って話はあるんですが、『管理されたネットワーク』かどうかを判定するのには、NLA ( Network Location Awareness ) というあたりの処理を利用します。
とりあえず、こんな感じで NLA_NETWORK_UNMANAGED って結果が取れました。自宅環境ではドメイン組んでいないので、『管理されたネットワーク』にはならないみたいです...。
#include "stdafx.h" #include <winsock2.h> #include <mswsock.h> #include <Windows.h> #pragma comment (lib, "ws2_32.lib") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsd; char buf[16384]; int ret; DWORD size; WSAQUERYSET *pWsaqs = NULL; GUID NLANameSpaceGUID = NLA_SERVICE_CLASS_GUID; HANDLE hLookup; PNLA_BLOB pBlob; DWORD offset = 0; ret = ::WSAStartup(MAKEWORD(2, 2), &wsd); if (ret != 0) { printf("WSAStartup() error 0x%0.8X\n", ::WSAGetLastError()); goto fin; } pWsaqs = (WSAQUERYSET *)buf; ::memset(pWsaqs, 0, sizeof(*pWsaqs)); pWsaqs->dwSize = sizeof(WSAQUERYSET); pWsaqs->dwNameSpace = NS_NLA; pWsaqs->lpServiceClassId = &NLANameSpaceGUID; ret = ::WSALookupServiceBegin(pWsaqs, LUP_RETURN_ALL | LUP_DEEP, &hLookup); if (ret == SOCKET_ERROR) { printf("WSALookupServiceBegin() error : 0x%0.8X\n", ::WSAGetLastError()); goto fin_cleanup; } while (TRUE) { ::memset(pWsaqs, 0, sizeof(*pWsaqs)); size = sizeof(buf); ret = ::WSALookupServiceNext(hLookup, LUP_RETURN_ALL, &size, pWsaqs); if (ret == SOCKET_ERROR) { ret = ::WSAGetLastError(); if (ret == WSA_E_NO_MORE) { break; } printf("WSALookupServiceNext() error : 0x%0.8X\n", ret); goto fin_service_end; } if (pWsaqs->lpBlob == NULL) { continue; } do { pBlob = (PNLA_BLOB) &(pWsaqs->lpBlob->pBlobData[offset]); switch (pBlob->header.type) { case NLA_CONNECTIVITY: printf("NLA_CONNECTIVITY\n"); switch(pBlob->data.connectivity.type) { case NLA_NETWORK_AD_HOC: printf(" Network Type: Ad Hoc\n"); break; case NLA_NETWORK_MANAGED: printf(" Network Type: Managed\n"); break; case NLA_NETWORK_UNMANAGED: printf(" Network Type: Unmanaged\n"); break; case NLA_NETWORK_UNKNOWN: printf(" Network Type: Unknown\n"); break; } break; default: break; } offset = pBlob->header.nextOffset; } while (offset != 0); } fin_service_end: ::WSALookupServiceEnd(hLookup); fin_cleanup: ::WSACleanup(); fin: return 0; }
iPhone 5s/c が発売されました。世の中的には、そのビッグウェーブに乗ったり乗らなかったりだと思いますが、今日、アップルストアに行って、新しい iPhone に交換してきました。といっても、5s/c ではなく、去年買った iPhone 5 です。
先週あたりから、スリープボタンが効いたり効かなかったりで、ロックしたつもりがされてない、とか、微妙な動きをするようになってました。さすがに使いづらいので、さくさくジーニアスバーを予約して、無事、交換となりました ( 厳密には、保証期間が過ぎてたみたいなんですが、その辺はなんとかゴニョゴニョ... )。
iPhone 4 -> 4s -> 5 と一年おきに変えてきましたが、今のところ、iPhone 5s/c には食指が動きません。まぁ、携帯の回線を整理する意味で、au から docomo に戻そうかとは思ってるんですが...。あんまり、回線的にいい評判も聞かないし、どうしようか悩み中です。
あ。ウィルコムの ストラップフォン は、最近ほとんど使ってなかったので、さくっと解約してきました。そっちの電話番号は、ごくごくプライベートにしか使ってなかったので、電話番号を知ってる人もほとんどいないと思いますが、もし、『電話がつながらないぞー』という方がいらっしゃったら、お手数ですが、docomo の電話にご連絡いただけると助かります。
どこかで見たパターン...。
過去に何を書いたか調べるのが面倒なときは、ついついググっちゃうわけなんですけど、先日、ググった結果が http://www.nic.st/ に飛ばされる状態になってました。んん? って、よく見てみると、2013-09-07 でこのドメインが期限切れになってます。ちゃんとブログを更新していないバチが当たった感じでしょうか。まことに申し訳ありません。
非常にお恥ずかしい状況でしたが、現在は何とか復旧できていると思います。期限切れになっていた間、おそらく、メールもエラーになっていたんだろうと思います。もし、『メールがエラーで返ってきたぞー』という方がいらっしゃったら、お手数ですが、再度、ご連絡いただけると助かります。
よろしくお願いします。