1805 lines
39 KiB
C++
1805 lines
39 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (C) Microsoft Corporation, 1992 - 1999
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
nsimgmt.cxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This is the module implements the client side support for management
|
||
|
APIs.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Steven Zeck (stevez) 04/23/92
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include <nsi.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
I_NsBindingFoundBogus(RPC_BINDING_HANDLE *BindingHandle, DWORD BindId);
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
I_NsClientBindSearch(RPC_BINDING_HANDLE *NsiClntBinding, DWORD *BindId);
|
||
|
void RPC_ENTRY
|
||
|
I_NsClientBindDone(RPC_BINDING_HANDLE *NsiClntBinding, DWORD BindId);
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupDeleteW(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * GroupName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Remove a group entry and all its member items.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
GroupNameSyntax - This value describes the type/format of the GroupName.
|
||
|
|
||
|
GroupName - Name that will be deleted.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_group_delete()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! GroupNameSyntax)
|
||
|
GroupNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_group_delete(NsiClntBinding, GroupNameSyntax, GroupName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrAddW(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * GroupName,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * MemberName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Add a new member to a group entry. Create the group entry on demand.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
GroupNameSyntax - This value describes the type/format of the GroupName.
|
||
|
|
||
|
GroupName - Name of the group that the member will be added to.
|
||
|
|
||
|
MemberNameSyntax - This value describes the type/format of the MemberName.
|
||
|
|
||
|
MemberName - Name of member in the group that will be added.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_group_mbr_add()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! GroupNameSyntax)
|
||
|
GroupNameSyntax = DefaultSyntax;
|
||
|
|
||
|
if (! MemberNameSyntax)
|
||
|
MemberNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_group_mbr_add(NsiClntBinding, GroupNameSyntax, GroupName,
|
||
|
MemberNameSyntax, MemberName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrRemoveW(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * GroupName,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * MemberName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
GroupNameSyntax - This value describes the type/format of the GroupName.
|
||
|
|
||
|
GroupName - Name of the group that the member will be deleted from.
|
||
|
|
||
|
MemberNameSyntax - This value describes the type/format of the MemberName.
|
||
|
|
||
|
MemberName - Name of member in the group that will be deleted
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_group_mbr_remove()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! GroupNameSyntax)
|
||
|
GroupNameSyntax = DefaultSyntax;
|
||
|
|
||
|
if (! MemberNameSyntax)
|
||
|
MemberNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_group_mbr_remove(NsiClntBinding, GroupNameSyntax, GroupName,
|
||
|
MemberNameSyntax, MemberName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrInqBeginW(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * GroupName,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Begin a inquiry to enumerate all the members in a group entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
GroupNameSyntax - This value describes the type/format of the GroupName.
|
||
|
|
||
|
GroupName - Name of the group that the member will be deleted from.
|
||
|
|
||
|
MemberNameSyntax - This controls what format the name is returned in.
|
||
|
|
||
|
InquiryContext - context handle for RpcNsGroupMbrInqNextW
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_group_mbr_inq_begin()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
*InquiryContext = 0;
|
||
|
|
||
|
if (! GroupNameSyntax)
|
||
|
GroupNameSyntax = DefaultSyntax;
|
||
|
|
||
|
if (! MemberNameSyntax)
|
||
|
MemberNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_group_mbr_inq_begin(NsiClntBinding, GroupNameSyntax, GroupName,
|
||
|
MemberNameSyntax, InquiryContext, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrInqNextW(
|
||
|
OUT RPC_NS_HANDLE InquiryContext,
|
||
|
OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Get the next member in a group entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
InquiryContext - context handle from RpcNsGroupMbrInqBeginW
|
||
|
|
||
|
MemberName - pointer to return results.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
nsi_group_mbr_inq_next()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
|
||
|
*MemberName = 0;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_group_mbr_inq_next(InquiryContext, MemberName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrInqDone(
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Finish enumerating the members of a group.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
InquiryContext - context handle from RpcNsGroupMbrInqBeginW
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
nsi_group_mbr_inq_done()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_group_mbr_inq_done(InquiryContext, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsEntryObjectInqBeginW(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * EntryName,
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Begin a inquiry to enumerate all the UUID objects in a server entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
EntryNameSyntax - This value describes the type/format of the EntryName.
|
||
|
|
||
|
EntryName - Name of the server entry to inquiry.
|
||
|
|
||
|
InquiryContext - context handle for RpcNsGroupMbrInqNextW
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_entry_object_inq_begin()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
*InquiryContext = 0;
|
||
|
|
||
|
if (! EntryNameSyntax)
|
||
|
EntryNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_entry_object_inq_begin(NsiClntBinding, EntryNameSyntax, EntryName,
|
||
|
InquiryContext, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsEntryObjectInqNext(
|
||
|
IN RPC_NS_HANDLE InquiryContext,
|
||
|
OUT UUID __RPC_FAR * ObjUuid
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Gets the next object UUID in the server entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
InquiryContext - context handle from RpcNsEntryObjectInqBeginW
|
||
|
|
||
|
ObjUuid - pointer to memory to return results
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
nsi_entry_object_inq_next()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_entry_object_inq_next(InquiryContext, (NSI_UUID_T *) ObjUuid, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsEntryObjectInqDone(
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Finish enumerating the objects of a server entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
InquiryContext - context handle from RpcNsEntryObjectInqBeginW
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
nsi_entry_object_inq_done()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_entry_object_inq_done(InquiryContext, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtInqExpAge(
|
||
|
OUT unsigned long *ExpirationAge
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Get the global time that a cached entry remains valide.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ExpirationAge - place to expiration age in seconds
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_inq_exp_age()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_mgmt_inq_exp_age(NsiClntBinding, ExpirationAge, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtSetExpAge(
|
||
|
IN unsigned long ExpirationAge
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
set the global time that a cached entry remains valide.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ExpirationAge - new expiration age in seconds
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_set_exp_age()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_mgmt_inq_set_age(NsiClntBinding, ExpirationAge, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsEntryExpandNameW(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * EntryName,
|
||
|
OUT unsigned short __RPC_FAR * __RPC_FAR * ExpandedName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
EntryNameSyntax - This value describes the type/format of the EntryName.
|
||
|
|
||
|
EntryName - Name that will be expanded.
|
||
|
|
||
|
ExpandedName - fully quailified global name.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! EntryNameSyntax)
|
||
|
EntryNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_entry_expand_name(NsiClntBinding, EntryNameSyntax, EntryName, ExpandedName,
|
||
|
&NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtBindingUnexportW(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned short * EntryName,
|
||
|
IN RPC_IF_ID * IfId, OPTIONAL
|
||
|
IN unsigned long VersOption, OPTIONAL
|
||
|
IN UUID_VECTOR * ObjectUuidVec OPTIONAL
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Remove interfaces and or objects from an server entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
EntryNameSyntax - This value describes the type/format of the EntryName.
|
||
|
|
||
|
EntryName - The server name that will be unexported.
|
||
|
|
||
|
IfId - The interface to unexport, NIL means objects only.
|
||
|
|
||
|
VersOption - constrains which interfaces to remove
|
||
|
|
||
|
ObjectUuidVec - list of objects to remove in combination with interface.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_binding_unexport()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! EntryNameSyntax)
|
||
|
EntryNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_mgmt_binding_unexport(NsiClntBinding, EntryNameSyntax, EntryName,
|
||
|
(NSI_IF_ID_P_T) IfId, VersOption,
|
||
|
(NSI_UUID_VECTOR_T *)ObjectUuidVec, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtEntryCreateW(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned short * EntryName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Create an entry name that is empty. It has no type and becomes a
|
||
|
type according to the first add API aplied (profile, groupd, server).
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
EntryNameSyntax - This value describes the type/format of the EntryName.
|
||
|
|
||
|
EntryName - Name of the new entry.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_entry_Create()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! EntryNameSyntax)
|
||
|
EntryNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_mgmt_entry_create(NsiClntBinding, EntryNameSyntax, EntryName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtEntryDeleteW(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned short * EntryName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Remove an entry name (server, group or profile).
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
EntryNameSyntax - This value describes the type/format of the EntryName.
|
||
|
|
||
|
EntryName - Name that this export will be stored in. This is just a
|
||
|
token that is passed on the the Name Server.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_entry_delete()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! EntryNameSyntax)
|
||
|
EntryNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_mgmt_entry_delete(NsiClntBinding, EntryNameSyntax, EntryName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtEntryInqIfIdsW(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned short * EntryName,
|
||
|
OUT RPC_IF_ID_VECTOR ** IfIdVec
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Get all the interface identifiers in a server entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
EntryNameSyntax - This value describes the type/format of the EntryName.
|
||
|
|
||
|
EntryName - Name that this export will be stored in. This is just a
|
||
|
token that is passed on the the Name Server.
|
||
|
|
||
|
IfIdVec - pointer to return results in
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_entry_inq_ifids()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! EntryNameSyntax)
|
||
|
EntryNameSyntax = DefaultSyntax;
|
||
|
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
*IfIdVec = 0;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_mgmt_entry_inq_if_ids(NsiClntBinding, EntryNameSyntax, EntryName,
|
||
|
(NSI_IF_ID_VECTOR_T **) IfIdVec, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileDeleteW(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * ProfileName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Remove a profile entry and all its member items.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
profileNameSyntax - This value describes the type/format of the profile ame.
|
||
|
|
||
|
profileName - Name that will be deleted.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_profile_delete()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! ProfileNameSyntax)
|
||
|
ProfileNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_profile_delete(NsiClntBinding, ProfileNameSyntax, ProfileName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltAddW(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * ProfileName,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * MemberName,
|
||
|
IN unsigned long Priority,
|
||
|
IN unsigned short __RPC_FAR * Annotation
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Add elements to the profile entry
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ProfileNameSyntax - This value describes the type/format of the ProfileName.
|
||
|
|
||
|
ProfileName - The server name that will be unexported.
|
||
|
|
||
|
IfId - The interface to unexport, NIL means objects only.
|
||
|
|
||
|
MemberNameSyntax - This value describes the type/format of the MemberName.
|
||
|
|
||
|
MemberName - The server name that will be unexported.
|
||
|
|
||
|
Priority - Place to insert member in profile
|
||
|
|
||
|
Annotation - comment for member
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_profile_elt_add()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! ProfileNameSyntax)
|
||
|
ProfileNameSyntax = DefaultSyntax;
|
||
|
|
||
|
if (! MemberNameSyntax)
|
||
|
MemberNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_profile_elt_add(NsiClntBinding, ProfileNameSyntax, ProfileName,
|
||
|
(NSI_IF_ID_P_T) IfId,
|
||
|
MemberNameSyntax, MemberName, Priority, Annotation, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltRemoveW(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * ProfileName,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * MemberName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Remove an element from a profile entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ProfileNameSyntax - This value describes the type/format of the ProfileName.
|
||
|
|
||
|
ProfileName - The server name that will be unexported.
|
||
|
|
||
|
IfId - The interface to unexport, NIL means objects only.
|
||
|
|
||
|
MemberNameSyntax - This value describes the type/format of the MemberName.
|
||
|
|
||
|
MemberName - The server name that will be unexported.
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_mgmt_binding_unexport()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (! ProfileNameSyntax)
|
||
|
ProfileNameSyntax = DefaultSyntax;
|
||
|
|
||
|
if (! MemberNameSyntax)
|
||
|
MemberNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_profile_elt_remove(NsiClntBinding, ProfileNameSyntax, ProfileName,
|
||
|
(NSI_IF_ID_P_T) IfId, MemberNameSyntax, MemberName, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltInqBeginW(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * ProfileName,
|
||
|
IN unsigned long InquiryType,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long VersOption,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned short __RPC_FAR * MemberName,
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Remove an element from a profile entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ProfileNameSyntax - This value describes the type/format of the ProfileName.
|
||
|
|
||
|
ProfileName - The server name that will be unexported.
|
||
|
|
||
|
InquiryType - Type of inquiry, one of RpcCProfile* constants
|
||
|
|
||
|
IfId - The interface to unexport, NIL means objects only.
|
||
|
|
||
|
VersOption - Version options, one of RpcCVers* constants
|
||
|
|
||
|
MemberNameSyntax - This value describes the type/format of the MemberName.
|
||
|
|
||
|
MemberName - The server name that will be unexported.
|
||
|
|
||
|
InquiryContext - context handle for use wiht RpcNsProfileEltInqNextW
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
NSI_S_NAME_SERVICE_UNAVAILABLE, nsi_profile_elt_inq_begin()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS status;
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
RPC_BINDING_HANDLE NsiClntBinding = NULL;
|
||
|
DWORD BindId = 0;
|
||
|
|
||
|
if (InquiryContext)
|
||
|
*InquiryContext = NULL;
|
||
|
|
||
|
if (! ProfileNameSyntax)
|
||
|
ProfileNameSyntax = DefaultSyntax;
|
||
|
|
||
|
if (! MemberNameSyntax)
|
||
|
MemberNameSyntax = DefaultSyntax;
|
||
|
|
||
|
while ((status = I_NsClientBindSearch(&NsiClntBinding, &BindId)) == RPC_S_OK)
|
||
|
{
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_profile_elt_inq_begin(NsiClntBinding, ProfileNameSyntax, ProfileName, InquiryType,
|
||
|
(NSI_IF_ID_P_T) IfId, VersOption,
|
||
|
MemberNameSyntax, MemberName, InquiryContext, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
status = NsiMapStatus(NsiStatus);
|
||
|
if (NsiStatus != NSI_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
break;
|
||
|
|
||
|
I_NsBindingFoundBogus(&NsiClntBinding, BindId);
|
||
|
}
|
||
|
|
||
|
I_NsClientBindDone(&NsiClntBinding, BindId);
|
||
|
|
||
|
return(status);
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltInqNextW(
|
||
|
IN RPC_NS_HANDLE InquiryContext,
|
||
|
OUT RPC_IF_ID * IfId,
|
||
|
OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName,
|
||
|
OUT unsigned long __RPC_FAR * Priority,
|
||
|
OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Gets the next element in the profile entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
InquiryContext - context handle from RpcNsEntryObjectInqBeginW
|
||
|
|
||
|
MemberName - place to put profile element name
|
||
|
|
||
|
IfId - place to return interface
|
||
|
|
||
|
Priority - place to put profile element priority
|
||
|
|
||
|
Annotation - place to put profile element comment
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
nsi_profile_elt_inq_next()
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
unsigned short * pAnnotation;
|
||
|
unsigned short * pMemberName;
|
||
|
unsigned short ** ppAnnotation;
|
||
|
unsigned short ** ppMemberName;
|
||
|
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
|
||
|
if (Annotation)
|
||
|
ppAnnotation = Annotation;
|
||
|
else
|
||
|
ppAnnotation = &pAnnotation;
|
||
|
|
||
|
*ppAnnotation = NULL;
|
||
|
|
||
|
if (MemberName)
|
||
|
ppMemberName = MemberName;
|
||
|
else
|
||
|
ppMemberName = &pMemberName;
|
||
|
|
||
|
*ppMemberName = NULL;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_profile_elt_inq_next(InquiryContext, (NSI_IF_ID_P_T) IfId,
|
||
|
ppMemberName, Priority, ppAnnotation, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
if (!Annotation)
|
||
|
RpcStringFreeW(ppAnnotation);
|
||
|
|
||
|
if (!MemberName)
|
||
|
RpcStringFreeW(ppMemberName);
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltInqDone(
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Finish enumerating the objects of a profile entry.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
InquiryContext - context handle from RpcNsProfileEltInqBeginW
|
||
|
|
||
|
Returns:
|
||
|
|
||
|
nsi_profile_elt_inq_done()
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
UNSIGNED16 NsiStatus;
|
||
|
|
||
|
RpcTryExcept
|
||
|
{
|
||
|
nsi_profile_elt_inq_done(InquiryContext, &NsiStatus);
|
||
|
}
|
||
|
RpcExcept(1)
|
||
|
{
|
||
|
NsiStatus = MapException(RpcExceptionCode());
|
||
|
}
|
||
|
RpcEndExcept
|
||
|
|
||
|
return(NsiMapStatus(NsiStatus));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// The following are ASCII wrappers to the UNICODE API's
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupDeleteA(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * GroupName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING GroupNameW(GroupName);
|
||
|
|
||
|
if (GroupNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsGroupDeleteW(GroupNameSyntax, &GroupNameW));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrAddA(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * GroupName,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * MemberName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING GroupNameW(GroupName);
|
||
|
WIDE_STRING MemberNameW(MemberName);
|
||
|
|
||
|
if (GroupNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
if (MemberNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsGroupMbrAddW(GroupNameSyntax, &GroupNameW,
|
||
|
MemberNameSyntax, &MemberNameW));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrRemoveA(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * GroupName,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * MemberName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING GroupNameW(GroupName);
|
||
|
WIDE_STRING MemberNameW(MemberName);
|
||
|
|
||
|
if (GroupNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
if (MemberNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsGroupMbrRemoveW(GroupNameSyntax, &GroupNameW,
|
||
|
MemberNameSyntax, &MemberNameW));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrInqBeginA(
|
||
|
IN unsigned long GroupNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * GroupName,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING GroupNameW(GroupName);
|
||
|
|
||
|
if (GroupNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsGroupMbrInqBeginW(GroupNameSyntax, &GroupNameW,
|
||
|
MemberNameSyntax, InquiryContext));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsGroupMbrInqNextA(
|
||
|
OUT RPC_NS_HANDLE InquiryContext,
|
||
|
OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS Status;
|
||
|
|
||
|
Status = RpcNsGroupMbrInqNextW(InquiryContext,
|
||
|
(unsigned short __RPC_FAR * __RPC_FAR *) MemberName);
|
||
|
|
||
|
if (Status)
|
||
|
return(Status);
|
||
|
|
||
|
return(UnicodeToAscii((unsigned short *) *MemberName));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsEntryObjectInqBeginA(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * EntryName,
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING EntryNameW(EntryName);
|
||
|
|
||
|
if (EntryNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsEntryObjectInqBeginW(EntryNameSyntax, &EntryNameW,
|
||
|
InquiryContext));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsEntryExpandNameA(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * EntryName,
|
||
|
OUT unsigned char __RPC_FAR * __RPC_FAR * ExpandedName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS Status;
|
||
|
WIDE_STRING EntryNameW(EntryName);
|
||
|
|
||
|
if (EntryNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
Status = RpcNsEntryExpandNameW(EntryNameSyntax, &EntryNameW,
|
||
|
(unsigned short __RPC_FAR * __RPC_FAR *) ExpandedName);
|
||
|
|
||
|
if (Status)
|
||
|
return(Status);
|
||
|
|
||
|
return(UnicodeToAscii((unsigned short *) *ExpandedName));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtBindingUnexportA(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned char * EntryName,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long VersOption,
|
||
|
IN UUID_VECTOR * ObjectUuidVec OPTIONAL
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING EntryNameW(EntryName);
|
||
|
|
||
|
if (EntryNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsMgmtBindingUnexportW(EntryNameSyntax, &EntryNameW,
|
||
|
IfId, VersOption, ObjectUuidVec));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtEntryCreateA(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned char * EntryName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING EntryNameW(EntryName);
|
||
|
|
||
|
if (EntryNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsMgmtEntryCreateW(EntryNameSyntax, &EntryNameW));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtEntryDeleteA(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned char * EntryName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING EntryNameW(EntryName);
|
||
|
|
||
|
if (EntryNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsMgmtEntryDeleteW(EntryNameSyntax, &EntryNameW));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsMgmtEntryInqIfIdsA(
|
||
|
IN unsigned long EntryNameSyntax,
|
||
|
IN unsigned char * EntryName,
|
||
|
OUT RPC_IF_ID_VECTOR ** IfIdVec
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING EntryNameW(EntryName);
|
||
|
|
||
|
if (EntryNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsMgmtEntryInqIfIdsW(EntryNameSyntax, &EntryNameW,
|
||
|
IfIdVec));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileDeleteA(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * ProfileName
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING ProfileNameW(ProfileName);
|
||
|
|
||
|
if (ProfileNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsProfileDeleteW(ProfileNameSyntax, &ProfileNameW));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltAddA(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * ProfileName,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * MemberName,
|
||
|
IN unsigned long Priority,
|
||
|
IN unsigned char __RPC_FAR * Annotation
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING ProfileNameW(ProfileName);
|
||
|
WIDE_STRING MemberNameW(MemberName);
|
||
|
WIDE_STRING AnnotationW(Annotation);
|
||
|
|
||
|
if (ProfileNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
if (MemberNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
if (AnnotationW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsProfileEltAddW(ProfileNameSyntax, &ProfileNameW,
|
||
|
IfId, MemberNameSyntax, &MemberNameW, Priority, &AnnotationW));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltRemoveA(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * ProfileName,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * MemberName
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING ProfileNameW(ProfileName);
|
||
|
WIDE_STRING MemberNameW(MemberName);
|
||
|
|
||
|
if (ProfileNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
if (MemberNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsProfileEltRemoveW(ProfileNameSyntax, &ProfileNameW,
|
||
|
IfId, MemberNameSyntax, &MemberNameW));
|
||
|
}
|
||
|
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltInqBeginA(
|
||
|
IN unsigned long ProfileNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * ProfileName,
|
||
|
IN unsigned long InquiryType,
|
||
|
IN RPC_IF_ID * IfId,
|
||
|
IN unsigned long VersOption,
|
||
|
IN unsigned long MemberNameSyntax,
|
||
|
IN unsigned char __RPC_FAR * MemberName,
|
||
|
OUT RPC_NS_HANDLE *InquiryContext
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
WIDE_STRING ProfileNameW(ProfileName);
|
||
|
WIDE_STRING MemberNameW(MemberName);
|
||
|
|
||
|
if (ProfileNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
if (MemberNameW.OutOfMemory())
|
||
|
return(RPC_S_OUT_OF_MEMORY);
|
||
|
|
||
|
return(RpcNsProfileEltInqBeginW(ProfileNameSyntax, &ProfileNameW,
|
||
|
InquiryType, IfId, VersOption, MemberNameSyntax, &MemberNameW,
|
||
|
InquiryContext));
|
||
|
}
|
||
|
|
||
|
RPC_STATUS RPC_ENTRY
|
||
|
RpcNsProfileEltInqNextA(
|
||
|
IN RPC_NS_HANDLE InquiryContext,
|
||
|
OUT RPC_IF_ID * IfId,
|
||
|
OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName,
|
||
|
OUT unsigned long __RPC_FAR * Priority,
|
||
|
OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is an ASCII wrapper to the UNICODE version of the API. It
|
||
|
converts all char * -> short * strings and calls the UNICODE version.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
RPC_STATUS Status;
|
||
|
|
||
|
Status = RpcNsProfileEltInqNextW(InquiryContext, IfId,
|
||
|
(unsigned short __RPC_FAR * __RPC_FAR *) MemberName, Priority,
|
||
|
(unsigned short __RPC_FAR * __RPC_FAR *) Annotation);
|
||
|
|
||
|
if (Status)
|
||
|
return(Status);
|
||
|
|
||
|
if (Status = UnicodeToAscii((unsigned short *) *MemberName))
|
||
|
return(Status);
|
||
|
|
||
|
if (Annotation)
|
||
|
return(UnicodeToAscii((unsigned short *) *Annotation));
|
||
|
return Status;
|
||
|
}
|