PF_NPGetResourceInformation
コールバックシグネチャ
DWORD PF_NPGetResourceInformation(
NETRESOURCEW* lpNetResource,
void* lpBuffer,
DWORD* lpBufferSize,
LPWSTR* lplpSystem
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| lpNetResource | NETRESOURCEW* | 情報を取得する対象のネットワークリソースを指定します。 lpRemoteName フィールドには、リソースのリモート名を指定します。 呼び出し元のプログラムは、lpProvider フィールドと dwType フィールドの値が分かっている場合は、それらの値を設定します。分からない場合は、これらのフィールドに NULL を設定します。 NETRESOURCE のその他のフィールドはすべて無視され、初期化もされません。 lpRemoteName 文字列に、WNet API を通じてアクセスされる部分と、リソースの種類に固有の他のシステム API を通じてアクセスされる部分の両方が含まれている場合、この関数はリソースのネットワーク部分についてのみ情報を返します(ただし lplpSystem は例外で、このトピックの後半で説明します)。 たとえば、リソースが "\server\share\dir1\dir2" で、"\server\share" が WNet API を通じて、"\dir1\dir2" がファイルシステム API を通じてアクセスされる場合、プロバイダーは自身が "\server\share" に対する正しいプロバイダーであることを確認する必要がありますが、"\dir1\dir2" が実際に存在するかどうかまで確認する必要はありません。 |
| lpBuffer | void* | 結果を受け取るバッファーへのポインターです。 結果の先頭のフィールドは、単一の NETRESOURCE 構造体とそれに関連する文字列で、入力リソースのうち、リソースの種類に固有のシステム API ではなく WNet API を通じてアクセスされる部分を表します。 たとえば、入力のリモートリソース名が "\server\share\dir1\dir2" であった場合、出力される NETRESOURCE にはリソース "\server\share" に関する情報が格納されます。 lpRemoteName、lpProvider、dwType、dwDisplayType、dwUsage の各フィールドには値が設定されて返され、その他のフィールドはすべて NULL に設定されます。 lpRemoteName フィールドは、 NPEnumResource 関数による列挙で返されるものと同じ形式で返す必要があります。これにより、呼び出し元は大文字と小文字を区別する文字列比較を行えます。 これは、出力されたネットワークリソースが NPEnumResource が返したものと同じかどうかを判断するために必要です。 プロバイダーは、自身がそのリソースを所有しているかどうかを判断するために、純粋に構文上のチェックだけを行ってはなりません。 クライアント上で 2 つのネットワークが動作していて、構文上のチェックだけを行うプロバイダーが先に呼び出された場合、誤った結果になる可能性があります。 |
| lpBufferSize | DWORD* | lpBuffer が指すバッファーのサイズ(バイト単位)を格納した場所へのポインターです。 バッファーが結果を格納するには小さすぎる場合、この関数は必要なバッファーサイズをこの場所に格納し、エラー WN_MORE_DATA を返します。 |
| lplpSystem | LPWSTR* | 正常に復帰した場合、出力バッファー内にある null で終わる文字列へのポインターです。この文字列は、リソースのうち、WNet API ではなくリソースの種類に固有のシステム API を通じてアクセスされる部分を示します。 そのような部分が無い場合、lplpSystem には NULL が設定されます。 たとえば、入力のリモートリソース名が "\server\share\dir" であった場合、lpRemoteName は "\server\share" を指して返され、lplpSystem は "\dir" を指します。どちらの文字列も lpBuffer が指すバッファーに格納されます。 |
公式ドキュメント
ネットワークリソースのうち、WNet API を通じてアクセスされる部分と、リソースの種類に固有の API を通じてアクセスされる部分を分離します。
戻り値
関数が成功した場合は WN_SUCCESS を返します。失敗した場合はエラーコードを返します。エラーコードは次のいずれかです。
| 戻り値 | 説明 |
|---|---|
|
入力バッファーが小さすぎます。 |
|
このプロバイダーはそのリソースを認識できません。 |
|
dwUsage または dwType が無効です。 |
|
呼び出し元が渡した 0 以外の dwType が、ネットワークリソースの実際の種類と一致しません。 |
|
呼び出し元がネットワークに対して認証されていません。 |
|
呼び出し元はネットワークに対して認証されていますが、十分なアクセス許可がありません。 |
解説(Remarks)
名前付きのネットワークリソースから列挙ツリーを下方向にたどるには、 NPOpenEnum とその関連関数を使用します。 名前付きリソースから上方向にたどるには、NPGetResourceInformation 関数を呼び出してリソースに関する情報を取得し、続いて NPGetResourceParent 関数を呼び出して親リソースの名前と種類を取得します。
NPGetResourceInformation は、指定されたプロバイダーが、指定されたネットワークリソースに対する要求に応答する正しいプロバイダーかどうかを判断します。 その後、リソースの種類に関する情報を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)