RpcNsBindingUnexportW 函数 (rpcnsi.h)

RpcNsBindingUnexport 函数从名称服务数据库中的条目中删除接口和对象的绑定句柄。

注意 Windows Vista 及更高版本的操作系统不支持此功能。
 

语法

RPC_STATUS RpcNsBindingUnexportW(
  unsigned long EntryNameSyntax,
  RPC_WSTR      EntryName,
  RPC_IF_HANDLE IfSpec,
  UUID_VECTOR   *ObjectUuidVec
);

参数

EntryNameSyntax

EntryName 的语法。

若要使用注册表项 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax中指定的语法,请提供值 RPC_C_NS_SYNTAX_DEFAULT。

EntryName

指向要从中删除绑定句柄和对象 UUID 的条目名称的指针。

IfSpec

要从名称服务数据库中删除的绑定句柄的接口规范。 null 参数值指示不导出任何绑定句柄, (只有对象 UUID 未导出) 。

ObjectUuidVec

指向服务器不再想要提供的对象 UUID 的向量的指针。 应用程序构造此向量。 null 值指示没有要取消导出的对象 UUID, (只有绑定句柄是未导出) 。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_INVALID_VERS_OPTION
版本选项无效。
RPC_S_INVALID_NAME_SYNTAX
名称语法无效。
RPC_S_UNSUPPORTED_NAME_SYNTAX
不支持名称语法。
RPC_S_INCOMPLETE_NAME
名称不完整。
RPC_S_ENTRY_NOT_FOUND
找不到名称服务条目。
RPC_S_NAME_SERVICE_UNAVAILABLE
名称服务不可用。
RPC_S_INTERFACE_NOT_FOUND
找不到接口。
RPC_S_NOT_ALL_OBJS_UNEXPORTED
并非所有对象都未导出。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcNsBindingUnexport 函数允许服务器应用程序从名称服务数据库条目中删除资源的绑定句柄和对象 UUID。 服务器应用程序可以在对 RpcNsBindingUnexport 的单个调用中取消导出指定的接口和对象,也可以单独取消导出它们。 仅未导出与接口 UUID 匹配的绑定句柄,以及 IfSpec 参数中找到的主要和次要接口版本号。 使用 RpcNsMgmtBindingUnexport 函数删除接口的多个版本。

在 Windows 2000 中,RPC 运行时环境使用 Active Directory 作为其名称服务数据库。 这意味着将从本地缓存和 Active Directory 中删除授权的未导出条目。 未经授权的未导出将仅从本地缓存中删除。 有关授权和访问控制 Lists的详细信息,请参阅平台软件开发工具包 (SDK) 的安全部分中访问控制。

如果 RpcNsBindingUnexport 找不到指定接口的任何绑定句柄,则函数将返回RPC_S_INTERFACE_NOT_FOUND状态代码,并且不会取消导出对象 UUID(如果指定了)。

如果找到指定接口的一个或多个绑定句柄且未导出,则 RpcNsBindingUnexport 将取消导出指定的对象 UUID(如果有)。

如果未找到任何指定的对象 UUID,RpcNsBindingUnexport 将返回RPC_S_NOT_ALL_OBJS_UNEXPORTED状态代码。

除了调用 RpcNsBindingUnexport 外,服务器还应调用 RpcEpUnregister 函数来注销服务器以前注册到本地终结点映射数据库的终结点。

创建后,即使删除了所有绑定句柄和 UUID,服务器条目也会保留。 服务器条目必须至少有一个绑定句柄才能存在。 因此,仅将 UUID 导出到不存在的条目不起作用,并且取消导出所有绑定句柄会删除该条目。

明智地使用 RpcNsBindingUnexport 。 若要使自动激活的服务器保持可用,必须在激活服务器进程之间将其绑定句柄保留在名称服务数据库中。 但是,如果使用动态绑定,如果不取消导出绑定句柄,Active Directory 可能会变得太大,无法管理。

因此,在调用此函数之前,请记住预期服务器不可用的时间以及正在使用的绑定类型。 如果使用静态绑定,请保留此函数,以便在预期服务器长时间不可用时(例如,从服务中永久删除服务器时)。

注意 名称服务数据库设计为相对稳定。 在复制的名称服务数据库中,频繁使用 RpcNsBindingExportRpcNsBindingUnexport 函数会导致名称服务数据库重复删除和替换同一条目,并可能导致性能问题。
 

注意

rpcnsi.h 标头将 RpcNsBindingUnexport 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 rpcnsi.h (包括 Rpc.h)
Library Rpcns4.lib
DLL Rpcns4.dll

另请参阅

RpcEpUnregister

RpcNsBindingExport