NetShareCheck 函数 (lmshare.h)

检查服务器是否正在共享设备。

语法

NET_API_STATUS NET_API_FUNCTION NetShareCheck(
  [in]  LMSTR   servername,
  [in]  LMSTR   device,
  [out] LPDWORD type
);

parameters

[in] servername

指向字符串的指针,该字符串指定要在其中执行函数的远程服务器的 DNS 或 NetBIOS 名称。 如果此参数为 NULL,则使用本地计算机。

[in] device

指向字符串的指针,该字符串指定要检查共享访问的设备的名称。

[out] type

指向一个变量的指针,该变量接收指定共享设备类型的标志的位掩码。 仅当函数成功返回时,才会设置此参数。

可以指定以下标志之一。

含义
STYPE_DISKTREE
硬盘驱动器。
STYPE_PRINTQ
打印队列。
STYPE_DEVICE
通信设备。
STYPE_IPC
IPC) (进程间通信。
 

此外,还可以指定以下一个或两个标志。

含义
STYPE_SPECIAL
专用共享,用于进程间通信 (IPC$) 或服务器的远程管理 (ADMIN$) 。 还可以引用管理共享,例如 C$、D$、E$等。 有关详细信息,请参阅 网络共享函数
STYPE_TEMPORARY
临时共享。

返回值

如果函数成功,则返回值 NERR_Success

如果函数失败,则返回值可能是以下错误代码之一。

返回代码 说明
ERROR_NOT_ENOUGH_MEMORY
可用内存不足。
NERR_DeviceNotShared
设备不共享。

注解

此函数仅适用于 SMB) 共享 (服务器消息块。 对于其他类型的共享(例如分布式文件系统 (DFS) 或 WebDAV 共享),请使用支持所有类型的共享的 Windows 网络 (WNet) 函数

成功执行 NetShareCheck 函数不需要特殊组成员身份。

如果要对 Active Directory 进行编程,则可以调用某些 Active Directory 服务接口 (ADSI) 方法来实现通过调用网络管理共享函数可以实现的相同功能。 有关详细信息,请参阅 IADsFileShare

示例

下面的代码示例演示如何使用对 NetShareCheck 函数的调用来检查服务器是否正在共享设备。 函数返回要共享的设备的类型,如上述 类型 参数文档中所述。

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")

void wmain( int argc, TCHAR *argv[ ])
{
   NET_API_STATUS res;
   DWORD devType = 0;

   if(argc<3)
      printf("Usage: NetShareCheck server device\n");
   else
   {
      //
      // Call the NetShareCheck function.
      //
      res=NetShareCheck(argv[1], argv[2], &devType);
      //
      // If the function succeeds, inform the user.
      //
      if(res==0)
         printf("Device is shared as type %u.\n",devType);
      //
      // Otherwise, print the error.
      //
      else
         printf("Error: %u\n", res);
   }
   return;
}

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 lmshare.h (包括 Lm.h)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

NetShareEnum

NetShareGetInfo

网络管理功能

网络管理概述

网络共享函数