143 if (LocalBuffer !=
NULL)
185 ERR(
"SamLookupNamesInDomain(%wZ) failed (Status %08lx)\n", AliasName,
Status);
192 ERR(
"Object is not an Alias!\n");
204 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
210 if (RelativeIds !=
NULL)
244 for (
i = 0;
i < EntryCount;
i++)
247 buf[
i].lgrmi3_domainandname);
284 for (
i = 0;
i < EntryCount;
i++)
298 if (MemberBuffer !=
NULL)
300 for (
i = 0;
i < EntryCount;
i++)
302 if (MemberBuffer[
i].lgrmi0_sid !=
NULL)
320 if (NamesArray !=
NULL)
323 *MemberList = MemberBuffer;
355 if (parm_err !=
NULL)
359 if (servername !=
NULL)
388 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
399 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
411 ERR(
"OpenAliasByName: alias %wZ already exists!\n", &AliasName);
426 (servername !=
NULL) ? &ServerName :
NULL,
431 ERR(
"SamOpenDomain failed (Status %08lx)\n",
Status);
444 ERR(
"SamCreateAliasInDomain failed (Status %08lx)\n",
Status);
449 TRACE(
"Created alias \"%wZ\" (RID: %lu)\n", &AliasName, RelativeId);
461 ERR(
"SamSetInformationAlias failed (Status %08lx)\n",
Status);
472 if (AliasHandle !=
NULL)
480 if (DomainHandle !=
NULL)
483 if (ServerHandle !=
NULL)
540 if (servername !=
NULL)
543 pServerName = &ServerName;
561 ERR(
"BuildSidListFromDomainAndName failed (ApiStatus %lu)\n", ApiStatus);
578 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
589 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
601 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
605 if (AliasHandle ==
NULL)
607 if (DomainHandle !=
NULL)
617 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
629 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
637 for (
i = 0;
i < totalentries;
i++)
640 MemberList[
i].lgrmi0_sid);
643 ERR(
"SamAddMemberToAlias failed (Status %lu)\n",
Status);
652 for (
i = 0;
i < totalentries;
i++)
654 if (MemberList[
i].lgrmi0_sid !=
NULL)
661 if (AliasHandle !=
NULL)
664 if (DomainHandle !=
NULL)
667 if (ServerHandle !=
NULL)
693 if (servername !=
NULL)
705 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
716 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
728 TRACE(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &GroupName, ApiStatus);
732 if (AliasHandle ==
NULL)
734 if (DomainHandle !=
NULL)
742 (servername !=
NULL) ? &ServerName :
NULL,
747 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
759 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &GroupName, ApiStatus);
770 ERR(
"SamDeleteAlias failed (Status %08lx)\n",
Status);
776 if (AliasHandle !=
NULL)
779 if (DomainHandle !=
NULL)
782 if (ServerHandle !=
NULL)
839 if (servername !=
NULL)
842 pServerName = &ServerName;
860 ERR(
"BuildSidListFromDomainAndName failed (ApiStatus %lu)\n", ApiStatus);
877 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
888 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
900 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
904 if (AliasHandle ==
NULL)
906 if (DomainHandle !=
NULL)
916 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
928 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
936 for (
i = 0;
i < totalentries;
i++)
939 MemberList[
i].lgrmi0_sid);
942 ERR(
"SamAddMemberToAlias failed (Status %lu)\n",
Status);
951 for (
i = 0;
i < totalentries;
i++)
953 if (MemberList[
i].lgrmi0_sid !=
NULL)
960 if (AliasHandle !=
NULL)
963 if (DomainHandle !=
NULL)
966 if (ServerHandle !=
NULL)
998 level,
bufptr, prefmaxlen, entriesread, totalentries, resumehandle);
1004 if (servername !=
NULL)
1007 if (resumehandle !=
NULL && *resumehandle != 0)
1017 EnumContext->EnumerationContext = 0;
1018 EnumContext->Buffer =
NULL;
1019 EnumContext->Returned = 0;
1020 EnumContext->Index = 0;
1023 &EnumContext->ServerHandle,
1028 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
1034 (servername !=
NULL) ? &ServerName :
NULL,
1036 &EnumContext->AccountDomainHandle);
1039 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
1046 &EnumContext->BuiltinDomainHandle);
1049 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
1055 EnumContext->DomainHandle = EnumContext->BuiltinDomainHandle;
1061 TRACE(
"EnumContext->Index: %lu\n", EnumContext->
Index);
1062 TRACE(
"EnumContext->Returned: %lu\n", EnumContext->
Returned);
1066 TRACE(
"Calling SamEnumerateAliasesInDomain\n");
1074 TRACE(
"SamEnumerateAliasesInDomain returned (Status %08lx)\n",
Status);
1077 ERR(
"SamEnumerateAliasesInDomain failed (Status %08lx)\n",
Status);
1089 TRACE(
"EnumContext: %lu\n", EnumContext);
1090 TRACE(
"EnumContext->Returned: %lu\n", EnumContext->
Returned);
1091 TRACE(
"EnumContext->Buffer: %p\n", EnumContext->
Buffer);
1094 CurrentAlias = &EnumContext->
Buffer[EnumContext->
Index];
1104 ERR(
"SamOpenAlias failed (Status %08lx)\n",
Status);
1111 (
PVOID *)&AliasInfo);
1114 ERR(
"SamQueryInformationAlias failed (Status %08lx)\n",
Status);
1131 if (AliasInfo !=
NULL)
1137 EnumContext->
Index++;
1143 switch (EnumContext->
Phase)
1149 EnumContext->
Index = 0;
1176 if (EnumContext !=
NULL)
1177 *totalentries = EnumContext->
Returned;
1181 if (EnumContext !=
NULL)
1207 if (AliasHandle !=
NULL)
1210 if (AliasInfo !=
NULL)
1213 if (resumehandle !=
NULL)
1218 TRACE (
"return %lu\n", ApiStatus);
1248 if (servername !=
NULL)
1260 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
1271 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
1283 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &GroupName, ApiStatus);
1287 if (AliasHandle ==
NULL)
1289 if (DomainHandle !=
NULL)
1294 (servername !=
NULL) ? &ServerName :
NULL,
1299 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
1311 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &GroupName, ApiStatus);
1320 (
PVOID *)&AliasInfo);
1323 ERR(
"SamQueryInformationAlias failed (Status %08lx)\n",
Status);
1335 if (AliasInfo !=
NULL)
1338 if (AliasHandle !=
NULL)
1341 if (DomainHandle !=
NULL)
1344 if (ServerHandle !=
NULL)
1386 totalentries, resumehandle);
1392 if (servername !=
NULL)
1397 if (resumehandle !=
NULL && *resumehandle != 0)
1410 &EnumContext->ServerHandle,
1415 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
1423 &EnumContext->DomainHandle);
1426 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
1435 &EnumContext->AliasHandle);
1438 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
1442 if (EnumContext->AliasHandle ==
NULL)
1444 if (EnumContext->DomainHandle !=
NULL)
1449 (servername !=
NULL) ? &ServerName :
NULL,
1451 &EnumContext->DomainHandle);
1454 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
1463 &EnumContext->AliasHandle);
1466 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
1476 &EnumContext->Count);
1479 ERR(
"SamGetMemberInAlias failed (Status %08lx)\n",
Status);
1484 if (EnumContext->Count == 0)
1486 TRACE(
"No member found. We're done.\n");
1503 &EnumContext->LsaHandle);
1513 &EnumContext->Domains,
1514 &EnumContext->Names);
1524 for (
i = 0;
i < EnumContext->
Count;
i++)
1591 for (
i = 0;
i < EnumContext->
Count;
i++)
1600 EnumContext->
Sids[
i],
1611 EnumContext->
Sids[
i],
1634 EnumContext->
Sids[
i],
1688 *entriesread = EnumContext->
Count;
1693 if (EnumContext !=
NULL)
1694 *totalentries = EnumContext->
Count;
1699 if (EnumContext !=
NULL)
1756 if (parm_err !=
NULL)
1759 if (servername !=
NULL)
1771 ERR(
"SamConnect failed (Status %08lx)\n",
Status);
1782 ERR(
"OpenBuiltinDomain failed (Status %08lx)\n",
Status);
1794 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
1798 if (AliasHandle ==
NULL)
1800 if (DomainHandle !=
NULL)
1805 (servername !=
NULL) ? &ServerName :
NULL,
1810 ERR(
"OpenAccountDomain failed (Status %08lx)\n",
Status);
1822 ERR(
"OpenAliasByName(%wZ) failed (ApiStatus %lu)\n", &AliasName, ApiStatus);
1841 TRACE(
"SamSetInformationAlias failed (ApiStatus %lu)\n", ApiStatus);
1862 TRACE(
"SamSetInformationAlias failed (ApiStatus %lu)\n", ApiStatus);
1874 if (AliasHandle !=
NULL)
1877 if (DomainHandle !=
NULL)
1880 if (ServerHandle !=
NULL)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
NTSTATUS WINAPI LsaOpenPolicy(IN PLSA_UNICODE_STRING SystemName OPTIONAL, IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE PolicyHandle)
NTSTATUS WINAPI LsaLookupSids(IN LSA_HANDLE PolicyHandle, IN ULONG Count, IN PSID *Sids, OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, OUT PLSA_TRANSLATED_NAME *Names)
NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
NTSTATUS WINAPI LsaLookupNames(IN LSA_HANDLE PolicyHandle, IN ULONG Count, IN PLSA_UNICODE_STRING Names, OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, OUT PLSA_TRANSLATED_SID *Sids)
NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle)
NET_API_STATUS WINAPI NetApiBufferFree(LPVOID Buffer)
NET_API_STATUS WINAPI NetApiBufferAllocate(DWORD ByteCount, LPVOID *Buffer)
NET_API_STATUS WINAPI NetpNtStatusToApiStatus(_In_ NTSTATUS Status)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
enum _ENUM_PHASE ENUM_PHASE
struct _LOCALGROUP_INFO_1 LOCALGROUP_INFO_1
struct _LOCALGROUP_INFO_1 * PLOCALGROUP_INFO_1
struct _LOCALGROUP_MEMBERS_INFO_2 LOCALGROUP_MEMBERS_INFO_2
struct _LOCALGROUP_MEMBERS_INFO_0 * PLOCALGROUP_MEMBERS_INFO_0
struct _LOCALGROUP_MEMBERS_INFO_2 * PLOCALGROUP_MEMBERS_INFO_2
struct _LOCALGROUP_MEMBERS_INFO_1 * PLOCALGROUP_MEMBERS_INFO_1
struct _LOCALGROUP_MEMBERS_INFO_3 * PLOCALGROUP_MEMBERS_INFO_3
struct _LOCALGROUP_INFO_0 * PLOCALGROUP_INFO_0
struct _LOCALGROUP_INFO_0 LOCALGROUP_INFO_0
struct _LOCALGROUP_MEMBERS_INFO_1 LOCALGROUP_MEMBERS_INFO_1
struct _LOCALGROUP_MEMBERS_INFO_3 LOCALGROUP_MEMBERS_INFO_3
struct _LOCALGROUP_MEMBERS_INFO_0 LOCALGROUP_MEMBERS_INFO_0
#define NERR_GroupNotFound
NET_API_STATUS WINAPI NetLocalGroupSetMembers(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE buf, DWORD totalentries)
NET_API_STATUS WINAPI NetLocalGroupDelMembers(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE buf, DWORD totalentries)
enum _ENUM_PHASE ENUM_PHASE
static VOID FreeAliasInfo(PALIAS_GENERAL_INFORMATION AliasInfo)
NET_API_STATUS WINAPI NetLocalGroupGetMembers(LPCWSTR servername, LPCWSTR localgroupname, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR resumehandle)
NET_API_STATUS WINAPI NetLocalGroupSetInfo(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE buf, LPDWORD parm_err)
NET_API_STATUS WINAPI NetLocalGroupEnum(LPCWSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR resumehandle)
NET_API_STATUS WINAPI NetLocalGroupGetInfo(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE *bufptr)
struct _ENUM_CONTEXT * PENUM_CONTEXT
static NET_API_STATUS OpenAliasByName(SAM_HANDLE DomainHandle, PUNICODE_STRING AliasName, ULONG DesiredAccess, PSAM_HANDLE AliasHandle)
NET_API_STATUS WINAPI NetLocalGroupAdd(LPCWSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err)
NET_API_STATUS WINAPI NetLocalGroupDelMember(LPCWSTR servername, LPCWSTR groupname, PSID membersid)
struct _MEMBER_ENUM_CONTEXT * PMEMBER_ENUM_CONTEXT
NET_API_STATUS WINAPI NetLocalGroupDel(LPCWSTR servername, LPCWSTR groupname)
static NET_API_STATUS BuildAliasInfoBuffer(PALIAS_GENERAL_INFORMATION AliasInfo, DWORD level, LPVOID *Buffer)
NET_API_STATUS WINAPI NetLocalGroupAddMember(LPCWSTR servername, LPCWSTR groupname, PSID membersid)
struct _ENUM_CONTEXT ENUM_CONTEXT
NET_API_STATUS WINAPI NetLocalGroupAddMembers(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE buf, DWORD totalentries)
struct _MEMBER_ENUM_CONTEXT MEMBER_ENUM_CONTEXT
static NET_API_STATUS BuildSidListFromDomainAndName(IN PUNICODE_STRING ServerName, IN PLOCALGROUP_MEMBERS_INFO_3 buf, IN ULONG EntryCount, OUT PLOCALGROUP_MEMBERS_INFO_0 *MemberList)
enum _SID_NAME_USE * PSID_NAME_USE
#define memcpy(s1, s2, n)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
NTSTATUS OpenBuiltinDomain(IN SAM_HANDLE ServerHandle, IN ULONG DesiredAccess, OUT SAM_HANDLE *DomainHandle)
NET_API_STATUS BuildSidFromSidAndRid(IN PSID SrcSid, IN ULONG RelativeId, OUT PSID *DestSid)
NTSTATUS OpenAccountDomain(IN SAM_HANDLE ServerHandle, IN PUNICODE_STRING ServerName, IN ULONG DesiredAccess, OUT PSAM_HANDLE DomainHandle)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
@ AliasGeneralInformation
@ AliasAdminCommentInformation
ULONG SAM_ENUMERATE_HANDLE
#define DOMAIN_CREATE_ALIAS
#define SAM_SERVER_LOOKUP_DOMAIN
#define ALIAS_WRITE_ACCOUNT
#define SAM_SERVER_CONNECT
#define ALIAS_LIST_MEMBERS
#define ALIAS_READ_INFORMATION
#define ALIAS_REMOVE_MEMBER
#define DOMAIN_LIST_ACCOUNTS
NTSTATUS NTAPI SamAddMemberToAlias(IN SAM_HANDLE AliasHandle, IN PSID MemberId)
NTSTATUS NTAPI SamSetInformationAlias(IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, IN PVOID Buffer)
NTSTATUS NTAPI SamOpenAlias(IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG AliasId, OUT PSAM_HANDLE AliasHandle)
NTSTATUS NTAPI SamLookupNamesInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PUNICODE_STRING Names, OUT PULONG *RelativeIds, OUT PSID_NAME_USE *Use)
NTSTATUS NTAPI SamDeleteAlias(IN SAM_HANDLE AliasHandle)
NTSTATUS NTAPI SamFreeMemory(IN PVOID Buffer)
NTSTATUS NTAPI SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL, OUT PSAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
NTSTATUS NTAPI SamCloseHandle(IN SAM_HANDLE SamHandle)
NTSTATUS NTAPI SamCreateAliasInDomain(IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE AliasHandle, OUT PULONG RelativeId)
NTSTATUS NTAPI SamQueryInformationAlias(IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, OUT PVOID *Buffer)
NTSTATUS NTAPI SamGetMembersInAlias(IN SAM_HANDLE AliasHandle, OUT PSID **MemberIds, OUT PULONG MemberCount)
NTSTATUS NTAPI SamRemoveMemberFromAlias(IN SAM_HANDLE AliasHandle, IN PSID MemberId)
NTSTATUS NTAPI SamEnumerateAliasesInDomain(IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
SAM_HANDLE BuiltinDomainHandle
SAM_HANDLE AccountDomainHandle
SAM_ENUMERATE_HANDLE EnumerationContext
PSAM_RID_ENUMERATION Buffer
SID_NAME_USE lgrmi1_sidusage
LPWSTR lgrmi2_domainandname
SID_NAME_USE lgrmi2_sidusage
LPWSTR lgrmi3_domainandname
PLSA_TRUST_INFORMATION Domains
PLSA_REFERENCED_DOMAIN_LIST Domains
PLSA_TRANSLATED_NAME Names
static unsigned int bufptr
#define STATUS_MORE_ENTRIES
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
#define ERROR_INVALID_LEVEL
#define ERROR_ALIAS_EXISTS
#define ERROR_NONE_MAPPED