<Return[WXYZ]><Top>

WNetGetResourceParent

Declare Function Api_WNetGetResourceParent& Lib "mpr" Alias "WNetGetResourceParentA" (ByRef lpNetResource As NETRESOURCE, lpBuffer As Any, ByRef lpcbBuffer&)

Declare Function WNetGetResourceParent Lib "mpr" Alias "WNetGetResourceParentA" (ByRef lpNetResource As NETRESOURCE, lpBuffer As Any, ByRef lpcbBuffer As Long) As Long

ネットワーク参照階層内の特定のネットワーク資源の親を取得する。参照は、指定したネットワーク資源の場所から開始する。
参照階層を上へ移動するには、WNetGetResourceInformation と WNetGetResourceParent 関数を使う。階層を下へ移動するには、WNetOpenEnum 関数を使う。

パラメータ
lpNetResource
    [入力]親の名前を取得したいネットワーク資源を指定する 1 個の 構造体へのポインタを指定する。
    NETRESOURCE 構造体のメンバを次のように指定する。呼び出し側は通常、WNetGetResourceInformation または

    WNetGetResourceParent のいずれかの関数を使って、lpProvider と dwType の各メンバに提供するべき値を把握する。

    メンバ                

説明                                                                                                                                        

    dwType

 

ネットワーク資源の種類がわかっている場合は、dwType メンバで指定する。わかっていないときは、dwType メンバを NULL に設定しておく。

    lpRemoteName

親の名前を取得したいネットワーク資源のリモート名を指定する。

    lpProvider

 

資源を所有するネットワークプロバイダを指定する。このメンバは必須である。省略すると、この関数は誤った結果を返すことがある。

    NETRESOURCE 構造体の他のすべてのメンバは無視される。
lpBuffer
    [出力]親の資源を表す 1 つの NETRESOURCE 構造体を受け取る、バッファへのポインタを指定する。NETRESOURCE 構造体の

    lpRemoteName、lpProvider、dwType、dwDisplayType、dwUsage の 5 つのメンバにデータが格納される。他のすべてのメンバは、

    NULL に設定される。
    lpRemoteName メンバは、親資源のリモート名へのポインタである。この名前と、以前に WNetEnumResource 関数で列挙した名前は、

    構文が同じである。呼び出し側はこれらの文字列を比較して、以前に WNetEnumResource 関数を使って取得した資源と、

    WNetGetResourceParent 関数に渡す資源が同じかどうかを調べることができる。どのネットワークでも、指定した資源が親を持たない場

    合、lpRemoteName メンバは NULL に設定される。
    dwUsage メンバの RESOURCEUSAGE_CONNECTABLE ビットがセットされている場合、親の資源への接続が可能である。ただし、そ

    の親資源がネットワーク上で利用可能でなければならない。
lpcbBuffer
    [入出力]入力時は、lpBuffer パラメータが指すバッファのサイズ(バイト数)へのポインタを指定する。バッファが小さすぎて結果を保持でき

    ない場合、必要なバッファサイズが格納される。その場合、戻り値が ERROR_MORE_DATA になる。

戻り値
    関数が成功すると、NO_ERROR が返る。
    関数が失敗すると、次のいずれかのエラーコードが返りる。

    値                                                   

意味                                                                                                                             

    ERROR_ACCESS_DENIED

 

ユーザーはネットワークに認証されたが、この操作を行うために必要な権限(アクセス権)を持っていない。

    ERROR_BAD_NET_NAME

 

入力した lpRemoteName メンバで指定した名前の既存ネットワーク資源を持つネットワークは無い。

    ERROR_BAD_PROVIDER

 

入力した lpProvider メンバで指定したプロバイダが、インストールされているネットワークプロバイダと一致しない。

    ERROR_MORE_DATA

lpBuffer パラメータが指すバッファが小さすぎる。

    ERROR_NOT_AUTHENTICATED

呼び出し側が、親の名前を取得するために必要なアクセス許可を備えていない。


解説
    WNetGetResourceParent 関数は通常、WNetGetResourceInformation 関数と組み合わせて、ユーザーが入力したネットワークパスの解

    析と解釈を行う。
    資源の構文に親が含まれていると、WNetGetResourceInformation 関数とは異なり、WNetGetResourceParent 関数はその資源が実際

    に存在するかどうかにかかわらず親を返す。通常、WNetGetResourceParent 関数は、ネットワーク資源をユーザーに対して階層形式で表

    示するアプリケーションでのみ使うべきである。代表的なものが Windows エクスプローラと[ファイルを開く]ダイアログボックスである。どの

    ような資源の種類が返されるのか断定してはならない。
    WNetEnumResource、WNetGetResourceInformation、WNetGetResourceParent いずれかの関数を使って、 構造体の情報を取得で

    きる。また、NETRESOURCE 構造体のメンバを使って、ネットワーク資源の情報を構築することもできる。
    特定のサーバーが所属するドメイン名を取得する目的で、WNetGetResourceParent を使うのは適切ではない。参照階層内でドメインがサ

    ーバーのすぐ上に現れるネットワークでは正しいドメインを取得できるが、それ以外のネットワークでは正しい結果が得られない。