NetShareGetInfo 関数 (lmshare.h)

サーバー上の特定の共有リソースに関する情報を取得します。

構文

NET_API_STATUS NET_API_FUNCTION NetShareGetInfo(
  [in]  LMSTR  servername,
  [in]  LMSTR  netname,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

パラメーター

[in] servername

関数を実行するリモート サーバーの DNS または NetBIOS 名を指定する文字列へのポインター。 このパラメーターが NULL の場合は、ローカル コンピューターが使用されます。

[in] netname

情報を返す共有の名前を指定する文字列へのポインター。

[in] level

データの情報レベルを指定します。 このパラメーターには、次の値のいずれかを指定できます。

意味
0
共有名を返します。 bufptr パラメーターは、SHARE_INFO_0構造体を指します。
1
リソースの名前と種類、リソースに関連付けられているコメントなど、共有リソースに関する情報を返します。 bufptr パラメーターは、SHARE_INFO_1構造体を指します。
2
リソースの名前、種類とアクセス許可、パスワード、接続数など、共有リソースに関する情報を返します。 bufptr パラメーターは、SHARE_INFO_2構造体を指します。
501
リソースの名前と種類、およびリソースに関連付けられているコメントを返します。 bufptr パラメーターは、SHARE_INFO_501構造体を指します。
502
リソースの名前、種類とアクセス許可、接続の数、その他の関連情報など、共有リソースに関する情報を返します。 bufptr パラメーターは、SHARE_INFO_502構造体を指します。
503
リソースの名前、種類とアクセス許可、接続の数、およびその他の関連情報など、共有リソースに関する情報を指定します。 buf パラメーターは、SHARE_INFO_503構造体を指します。 この構造体の shi503_servername メンバーが "*" の場合、構成されたサーバー名はありません。

Windows Server 2003 および Windows XP: この情報レベルはサポートされていません。

1005
共有が Dfs ツリー構造のルート ボリュームであるかどうかを示す値を返します。 bufptr パラメーターは、SHARE_INFO_1005構造体を指します。

[out] bufptr

データを受信するバッファーへのポインター。 このデータの形式は 、level パラメーターの値によって異なります。 詳細については、「 ネットワーク管理機能バッファー」を参照してください。

このバッファーはシステムによって割り当てられ、 NetApiBufferFree 関数を使用して解放する必要があります。

戻り値

関数が成功した場合、戻り値はNERR_Success。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_ACCESS_DENIED
ユーザーには、要求された情報へのアクセス権がありません。
ERROR_INVALID_LEVEL
level パラメーターに指定された値が無効です。
ERROR_INVALID_PARAMETER
指定されたパラメーターが無効です。
ERROR_NOT_ENOUGH_MEMORY
十分なメモリがありません。
NERR_NetNameNotFound
共有名が存在しません。

注釈

この関数は、サーバー メッセージ ブロック (SMB) 共有にのみ適用されます。 分散ファイル システム (DFS) 共有や WebDAV 共有など、他の種類の共有の場合は、すべての種類の共有をサポートする Windows ネットワーク (WNet) 関数を使用します。

対話型ユーザー (コンピューターにローカルにログオンしているユーザー) の場合、 NetShareGetInfo 関数を実行するために特別なグループ メンバーシップは必要ありません。 非対話型ユーザーの場合、レベル 2、502、および 503 で NetShareEnum 関数を正常に実行するには、Administrator、Power User、Print Operator、または Server Operator グループ メンバーシップが必要です。 レベル 0 またはレベル 1 の呼び出しでは、特別なグループ メンバーシップは必要ありません。

Windows Server 2003 および Windows XP: NetShareGetInfo 関数をレベル 2 と 502 で正常に実行するには、すべてのユーザー、管理者、Power User、Print Operator、または Server Operator グループ メンバーシップが必要です。

Active Directory のプログラミングを行っている場合は、特定の Active Directory サービス インターフェイス (ADSI) メソッドを呼び出して、ネットワーク管理共有関数を呼び出すことで実現できるのと同じ機能を実現できます。 詳細については、「 IADsFileShare」を参照してください。

level パラメーターに 503 を指定した場合、SHARE_INFO_503構造体の shi503_servername メンバーで指定されたリモート サーバーは、NetServerTransportAddEx 関数を使用してトランスポート プロトコルにバインドされている必要があります。 NetServerTransportAddEx の呼び出しでは、level パラメーターに 2 または 3 を指定し、トランスポート プロトコルのSERVER_TRANSPORT_INFO_2構造でSVTI2_SCOPED_NAME フラグを指定する必要があります。

次のコード サンプルは、 NetShareGetInfo 関数の呼び出しを使用して、特定の共有リソースに関する情報を取得する方法を示しています。 このサンプルでは、情報レベル 502 ( SHARE_INFO_502) を指定して NetShareGetInfo を呼び出します。 呼び出しが成功すると、取得したデータが出力されます。 また、このサンプルでは IsValidSecurityDescriptor 関数を呼び出して 、shi502_security_descriptor メンバーを検証します。 最後に、サンプルは情報バッファーに割り当てられたメモリを解放します。

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>

#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "Advapi32.lib")

void wmain( int argc, TCHAR *lpszArgv[ ])
{
   PSHARE_INFO_502 BufPtr;
   NET_API_STATUS res;
   LPTSTR   lpszServer = NULL, lpszShare;
   //
   // Check command line arguments.
   //
   switch(argc)
   {
   case 3:
      lpszServer = lpszArgv[2];
   case 2:
      lpszShare = lpszArgv[1];
      break;
   default:
      printf("Usage: NetShareGetInfo sharename <servername>\n");
      return;
   }
   //
   // Call the NetShareGetInfo function, specifying level 502.
   //
   if((res = NetShareGetInfo (lpszServer,lpszShare,502,(LPBYTE *) &BufPtr)) == ERROR_SUCCESS)
   {
      //
      // Print the retrieved data.
      //
      printf("%S\t%S\t%u\n",BufPtr->shi502_netname, BufPtr->shi502_path, BufPtr->shi502_current_uses);
      //
      // Validate the value of the 
      //  shi502_security_descriptor member.
      //
      if (IsValidSecurityDescriptor(BufPtr->shi502_security_descriptor))
         printf("It has a valid Security Descriptor.\n");
      else
         printf("It does not have a valid Security Descriptor.\n");
      //
      // Free the allocated memory.
      //
      NetApiBufferFree(BufPtr);
   }
   else 
      printf("Error: %ld\n",res);
   return;
}

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー lmshare.h (Lm.h を含む)
Library Netapi32.lib
[DLL] Netapi32.dll

こちらもご覧ください

NetServerTransportAddEx

ネットワーク管理機能

ネットワーク管理の概要

ネットワーク共有関数

SECURITY_DESCRIPTOR

SHARE_INFO_0

SHARE_INFO_1

SHARE_INFO_1005

SHARE_INFO_2

SHARE_INFO_501

SHARE_INFO_502

SHARE_INFO_503