ちょっと変なところがあったので、こそこそ修正しつつ。
仕事場 ( ドメイン環境 ) で試してみたところ、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 でこのドメインが期限切れになってます。ちゃんとブログを更新していないバチが当たった感じでしょうか。まことに申し訳ありません。
非常にお恥ずかしい状況でしたが、現在は何とか復旧できていると思います。期限切れになっていた間、おそらく、メールもエラーになっていたんだろうと思います。もし、『メールがエラーで返ってきたぞー』という方がいらっしゃったら、お手数ですが、再度、ご連絡いただけると助かります。
よろしくお願いします。