|
| Net関連(NT) - NetConnection |
|
ここでは、NetConeection関連のAPIの使用方法を説明します。関連と言っても一つの関数 NetConnectionEnum 関数しかありませんが...
NetConnectionEnum 関数は、あるコンピュータの資源に接続(Connect)されている情報を列挙する場合に使用します。
但し、接続されている全ての情報を列挙できるのではなく、特定の 共有資源名 または コンピュータ名 の情報を列挙します。
ここで説明する内容は、私個人が注意する点と認識した内容を説明しています。ここで使用したサンプルでは、
NetConnectionEnum 関数のを使用しやすいように、汎用モジュールとして提供しています。
|
■ネットコネクション列挙
Private Declare Function NetConnectionEnum Lib "netapi32.dll" ( _
ByVal servername As String, _
ByVal qualifier As String, _
ByVal level As Long,
bufptr As Any, _
prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
resume_handle As Any) As Long
| servername |
対象となるサーバー名の UNICODE 文字列を指定します。
省略(NULL)が指定された場合は、ローカルコンピュータが対象になります。
UNICODE 文字列で指定しなければならないので、StrConv(サーバー名, vbUnicode) のように指定します。
|
| qualifier |
列挙される情報の対象条件を指定します。ここで指定できる条件は、
共有資源名 または、コンピュータ名 です。 levelに 1 が指定せれている場合、
この値を、共有資源名 にした場合、列挙された CONNECTION_INFO_1 構造体の
coni1_netname メンバの値には、コンピュータ名が格納され、コンピュータ名にし た場合、
列挙された CONNECTION_INFO_1 構造体の coni1_netname メンバの値には、共有資源名 が格納されます。
|
| level |
bufptrに格納される配列の構造体を指定します。
0:CONNECTION_INFO_0
1:CONNECTION_INFO_1
|
| bufptr |
列挙されたlevelで指定された構造体配列のバッファポインタを受け取ります。
この値は、構造体配列のポインタですので、MoveMemory 関数を使用して、適切に処理するようにします。
また、処理が終了した場合は、NetAPIBufferFree 関数を使用して、バッファの解放を行わなければなりません。
|
| prefmaxlen |
返される情報の最大バイト数を指定します。0 でも構いません。
|
| entriesread |
実際に列挙できたデータ数。
|
| totalentries |
列挙されるデータの総数。
|
| resume_handle |
列挙する次の情報へのハンドル。返された値が 0 の場合は、次の列挙情報はなし。
|
| 戻り値 |
0 の場合は、正常終了です。ERROR_MORE_DATA = 234 の場合は、次の列挙情報がまだ存在するので、
resumehandle メンバの値を使用して、再度列挙する必要があります。
これらの値以外は、エラーですので、適切な処理を行って下さい。
サンプルでは、mErr.bas 汎用モジュールを使用して、エラーメッセージを表示するようになっています。
|
|
|
| プロパティ |
| プロパティ名 |
データ型 |
説明 |
| NetConnectionServer |
String |
対象となるサーバーを指定します。値の取得も可能です。
NULLを設定した場合は、ローカルコンピュータが対象になります。
|
| プロシージャ |
| プロシージャ名 |
戻り値 |
説明・引数 |
| ConnectionEnum1 |
0 = 正常
0以外 = 異常(エラー番号)
|
接続状況の列挙
[I] strQualifier : 対象となるコンピュータ名または共有資源名
[O] lngCount : 列挙された情報の数
[O] tCI1VB() : 列挙情報を格納するCONNECTION_INFO_1_VB構造体配列
|
|
|
|
CONNECTION_INFO_1_VB構造体は、CONNECTION_INFO_1構造体の各メンバをVBより使用し易いように、
適切な型に置き換えた構造体です。適切な型に置き換えとは、文字列へのポインタ(Long)を文字列(String)などにする事を言います。
「使用する構造体の概要」で説明したような、mUtility.bas 汎用モジュールの GetPtrToStrA ファンクションプロシージャを呼び出して、
文字列に変換する処理は、ConnectionEnum1 ファンクションプロシージャで既に行っていますので、意識して、
文字列へのポインタ(Long)を文字列(String)などにする必要はありません。
WIN32 アプリケーションで使用する場合、WNetEnumResource 関数を使用する事が推奨されていますが、
NetConnectionEnum 関数も使用できるようですので、この説明を行いました。
|
|