INetwork
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
INetwork インターフェイスは、ローカルマシン上のネットワークを表します。また、類似のネットワーク署名を持つネットワーク接続の集合を表すこともあります。
解説(Remarks)
INetwork を実装する COM オブジェクトは、追加のプロパティ用のプロパティバッグも実装しています。このプロパティバッグにアクセスするには、INetwork インターフェイスを使用し、QueryInterface で IPropertyBag を取得します。この COM オブジェクトのプロパティバッグには、以下のプロパティが含まれます。
| パラメーター | 型 | 説明 |
|---|---|---|
| NA_DomainAuthenticationFailed | VT_BOOL | ドメインネットワークがドメインコントローラーに対して認証できないことを示します。 |
| NA_NetworkClass | VT_UINT として格納された NLM_NETWORK_CLASS 値 | ネットワークのクラスを指定します。取り得る値は次のとおりです。
|
|
NA_InternetConnectivityV4
または NA_InternetConnectivityV6 |
VT_UINT として格納された NLM_INTERNET_CONNECTIVITY 値 |
IPv4 または IPv6 のネットワーク接続に関する詳細を提供します。取り得る値は次のとおりです。
|
| NA_NameSetByPolicy | VT_BOOL | ネットワークの名前がグループポリシーによって設定されています。 |
| NA_IconSetByPolicy | VT_BOOL | ネットワークのアイコンがグループポリシーによって設定されています。 |
| NA_DescriptionSetByPolicy | VT_BOOL | ネットワークの説明がグループポリシーによって設定されています。 |
| NA_CategorySetByPolicy | VT_BOOL | ネットワークのカテゴリがグループポリシーによって設定されています。 |
| NA_NameReadOnly | VT_BOOL | ネットワークの名前は読み取り専用です。 |
| NA_IconReadOnly | VT_BOOL | ネットワークのアイコンは読み取り専用です。 |
| NA_DescriptionReadOnly | VT_BOOL | ネットワークの説明は読み取り専用です。 |
| NA_CategoryReadOnly | VT_BOOL | ネットワークのカテゴリは読み取り専用です。 |
| NA_AllowMerge | VT_BOOL | ネットワークを別のネットワークと統合できます。 |
IPropertyBag インターフェイスは、IPropertyBag::Read および IPropertyBag::Write メソッドの一部として LPCOLESTR を受け付けます。利便性のため、これらのプロパティの文字列値は同じ名前で netlistmgr.h 内に定義されています。
メソッド 13
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
GetName メソッドは、ネットワークの名前を返します。
| pszNetworkName | LPWSTR* | out | ネットワークの名前へのポインター。 |
戻り値
SetName メソッドは、ネットワークの名前を設定または変更します。
| szNetworkNewName | LPWSTR | in | ネットワークの新しい名前を含む、ゼロ終端の文字列。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合、メソッドは次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| szNetworkNewName が NULL です。 | |
|
指定された名前が長すぎます。 |
解説(Remarks)
ネットワーク名の最大長は 128 文字で、スペースのみ、タブ、または "\ /: * ? " < > |" を含めることはできません。
GetDescription メソッドは、ネットワークの説明文字列を返します。
| pszDescription | LPWSTR* | out | ネットワークのテキスト説明を指定する文字列へのポインター。この値は SysFreeString API を使用して解放する必要があります。 |
戻り値
SetDescription メソッドは、ネットワークの説明を設定または置換します。
| szDescription | LPWSTR | in | ネットワークの説明を含む、ゼロ終端の文字列。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合、メソッドは次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| szDescription が NULL です。 | |
|
指定された名前が長すぎます。 |
解説(Remarks)
ネットワークの説明の最大長は 1024 文字です。
GetNetworkId メソッドは、ネットワークの一意な識別子を返します。
| pgdGuidNetworkId | GUID* | out | ネットワーク ID を指定する GUID へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
pgdGuidNetworkId が指すバッファの割り当ては、呼び出し元の責任です。このバッファは GUID を保持できる十分な大きさである必要があります。
要求したネットワークが削除されていても、GetNetworkId の呼び出しは S_OK を返します。
GetDomainType メソッドは、ネットワークのドメインタイプを返します。
| pNetworkType | NLM_DOMAIN_TYPE* | out | ネットワークのドメインタイプを指定する NLM_DOMAIN_TYPE 列挙値へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
GetNetworkConnections メソッドは、ネットワークのすべてのネットワーク接続の列挙を返します。ネットワークは、異なるインターフェイスからの複数の接続、または同じインターフェイスからの異なるリンクを持つことができます。
| ppEnumNetworkConnection | IEnumNetworkConnections** | out | このネットワークへのローカル接続の一覧を列挙する IEnumNetworkConnections インターフェイスインスタンスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
GetTimeCreatedAndConnected メソッドは、ネットワークが作成および接続されたローカルの日付と時刻を返します。
| pdwLowDateTimeCreated | DWORD* | out | ネットワークが作成された日時へのポインター。具体的には、FILETIME.dwLowDateTime の下位 DWORD を含みます。 |
| pdwHighDateTimeCreated | DWORD* | out | ネットワークが作成された日時へのポインター。具体的には、FILETIME.dwLowDateTime の上位 DWORD を含みます。 |
| pdwLowDateTimeConnected | DWORD* | out | ネットワークに最後に接続された日時へのポインター。具体的には、FILETIME.dwLowDateTime の下位 DWORD を含みます。 |
| pdwHighDateTimeConnected | DWORD* | out | ネットワークに最後に接続された日時へのポインター。具体的には、FILETIME.dwLowDateTime の上位 DWORD を含みます。 |
戻り値
get_IsConnectedToInternet プロパティは、ネットワークがインターネット接続を持っているかどうかを指定します。
| pbIsConnected | VARIANT_BOOL* | out | TRUE の場合、このネットワークはインターネットへの接続を持ちます。FALSE の場合は持ちません。 |
戻り値
成功した場合は S_OK を返します。
get_IsConnected プロパティは、ネットワークが何らかのネットワーク接続を持っているかどうかを指定します。
| pbIsConnected | VARIANT_BOOL* | out | TRUE の場合、このネットワークは接続されています。FALSE の場合は接続されていません。 |
戻り値
成功した場合は S_OK を返します。
GetConnectivity メソッドは、ネットワークの接続状態を返します。
| pConnectivity | NLM_CONNECTIVITY* | out | このネットワークの接続状態を指定するビットマスクを含む NLM_CONNECTIVITY 列挙値へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
GetCategory メソッドは、ネットワークのカテゴリを返します。
| pCategory | NLM_NETWORK_CATEGORY* | out | ネットワークのカテゴリ情報を指定する NLM_NETWORK_CATEGORY 列挙値へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
ユーザーはこれらのカテゴリの既定の設定を変更できるため、プライベートまたはパブリックのネットワークカテゴリを、どの Windows ファイアウォールのポートが開いているかを推測するために使用してはいけません。代わりに、必要なポートが開いていることを確認するには Windows ファイアウォール API を呼び出す必要があります。
SetCategory メソッドは、ネットワークのカテゴリを設定します。変更は即座に有効になります。この API の呼び出し元は Administrators グループのメンバーである必要があります。
| NewCategory | NLM_NETWORK_CATEGORY | in | ネットワークの新しいカテゴリを指定する NLM_NETWORK_CATEGORY 列挙値へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_INetwork "{DCB00002-570F-4A9B-8D69-199FDBA5723B}" #usecom global INetwork IID_INetwork "{}" #comfunc global INetwork_GetName 7 var #comfunc global INetwork_SetName 8 wstr #comfunc global INetwork_GetDescription 9 var #comfunc global INetwork_SetDescription 10 wstr #comfunc global INetwork_GetNetworkId 11 var #comfunc global INetwork_GetDomainType 12 var #comfunc global INetwork_GetNetworkConnections 13 sptr #comfunc global INetwork_GetTimeCreatedAndConnected 14 var,var,var,var #comfunc global INetwork_get_IsConnectedToInternet 15 var #comfunc global INetwork_get_IsConnected 16 var #comfunc global INetwork_GetConnectivity 17 var #comfunc global INetwork_GetCategory 18 var #comfunc global INetwork_SetCategory 19 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_INetwork "{DCB00002-570F-4A9B-8D69-199FDBA5723B}" #usecom global INetwork IID_INetwork "{}" #comfunc global INetwork_GetName 7 sptr #comfunc global INetwork_SetName 8 wstr #comfunc global INetwork_GetDescription 9 sptr #comfunc global INetwork_SetDescription 10 wstr #comfunc global INetwork_GetNetworkId 11 sptr #comfunc global INetwork_GetDomainType 12 sptr #comfunc global INetwork_GetNetworkConnections 13 sptr #comfunc global INetwork_GetTimeCreatedAndConnected 14 sptr,sptr,sptr,sptr #comfunc global INetwork_get_IsConnectedToInternet 15 sptr #comfunc global INetwork_get_IsConnected 16 sptr #comfunc global INetwork_GetConnectivity 17 sptr #comfunc global INetwork_GetCategory 18 sptr #comfunc global INetwork_SetCategory 19 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。