RpcNsBindingUnexportW 函数 (rpcnsi.h)
RpcNsBindingUnexport 函数从名称服务数据库中的条目中删除接口和对象的绑定句柄。
语法
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 用于取消导出(只有绑定句柄未导出)。
返回值
价值 | 意义 |
---|---|
|
调用成功。 |
|
版本选项无效。 |
|
名称语法无效。 |
|
不支持名称语法。 |
|
名称不完整。 |
|
找不到名称服务条目。 |
|
名称服务不可用。 |
|
找不到接口。 |
|
不是所有未导出的对象。 |
言论
RpcNsBindingUnexport 函数允许服务器应用程序从名称服务数据库条目中删除资源的绑定句柄和对象 UUID。 服务器应用程序可以在单个调用 rpcNsBindingUnexport中取消导出指定的接口和对象,也可以单独取消导出它们。 只有与接口 UUID 匹配的绑定句柄和在 IfSpec 参数中找到的主要和次要接口版本号是未导出的。 使用 RpcNsMgmtBindingUnexport 函数删除接口的多个版本。
在 Windows 2000 中生效,RPC 运行时环境使用 Active Directory 作为其名称服务数据库。 这意味着,将从本地缓存和 Active Directory 中删除授权的未导出条目。 未授权的未导出将仅从本地缓存中删除。 有关授权和访问控制列表的详细信息,请参阅平台软件开发工具包(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 可能会变得如此之大,无法托管。
因此,在调用此函数之前,请记住服务器不可用的时间以及正在使用的绑定类型。 如果使用静态绑定,请将此函数保留为预期服务器在延长时间内不可用时保留此函数,例如,从服务中永久删除服务器时。
注意
rpcnsi.h 标头将 RpcNsBindingUnexport 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | rpcnsi.h (包括 Rpc.h) |
库 | Rpcns4.lib |
DLL | Rpcns4.dll |