Skip to content

Commit

Permalink
Fix issue 20577 - Add missing symbols related to Windows UAC
Browse files Browse the repository at this point in the history
Add extern(Windows) symbols and types related to Windows UAC
elevation and improve related types and enums.
  • Loading branch information
Etienne Cimon committed Feb 12, 2020
1 parent ce2025b commit c8ca9b3
Show file tree
Hide file tree
Showing 7 changed files with 353 additions and 1 deletion.
1 change: 1 addition & 0 deletions mak/COPY
Expand Up @@ -414,6 +414,7 @@ COPY=\
$(IMPDIR)\core\sys\windows\rpcnsip.d \
$(IMPDIR)\core\sys\windows\rpcnterr.d \
$(IMPDIR)\core\sys\windows\schannel.d \
$(IMPDIR)\core\sys\windows\sdkddkver.d \
$(IMPDIR)\core\sys\windows\secext.d \
$(IMPDIR)\core\sys\windows\security.d \
$(IMPDIR)\core\sys\windows\servprov.d \
Expand Down
1 change: 1 addition & 0 deletions mak/SRCS
Expand Up @@ -412,6 +412,7 @@ SRCS=\
src\core\sys\windows\rpcnsip.d \
src\core\sys\windows\rpcnterr.d \
src\core\sys\windows\schannel.d \
src\core\sys\windows\sdkddkver.d \
src\core\sys\windows\secext.d \
src\core\sys\windows\security.d \
src\core\sys\windows\servprov.d \
Expand Down
3 changes: 3 additions & 0 deletions mak/WINDOWS
Expand Up @@ -1203,6 +1203,9 @@ $(IMPDIR)\core\sys\windows\rpcnterr.d : src\core\sys\windows\rpcnterr.d
$(IMPDIR)\core\sys\windows\schannel.d : src\core\sys\windows\schannel.d
copy $** $@

$(IMPDIR)\core\sys\windows\sdkddkver.d : src\core\sys\windows\sdkddkver.d
copy $** $@

$(IMPDIR)\core\sys\windows\secext.d : src\core\sys\windows\secext.d
copy $** $@

Expand Down
117 changes: 117 additions & 0 deletions src/core/sys/windows/sdkddkver.d
@@ -0,0 +1,117 @@
/**
* Windows API header module
*
* Translated from Windows SDK API
*
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC src/core/sys/windows/sdkddkver.d)
*/
module core.sys.windows.sdkddkver;

version (Windows):

enum _WIN32_WINNT_NT4 = 0x0400;
enum _WIN32_WINNT_WIN2K = 0x0500;
enum _WIN32_WINNT_WINXP = 0x0501;
enum _WIN32_WINNT_WS03 = 0x0502;
enum _WIN32_WINNT_WIN6 = 0x0600;
enum _WIN32_WINNT_VISTA = 0x0600;
enum _WIN32_WINNT_WS08 = 0x0600;
enum _WIN32_WINNT_LONGHORN = 0x0600;
enum _WIN32_WINNT_WIN7 = 0x0601;
enum _WIN32_WINNT_WIN8 = 0x0602;
enum _WIN32_WINNT_WINBLUE = 0x0603;
enum _WIN32_WINNT_WIN10 = 0x0A00;

enum _WIN32_IE_IE20 = 0x0200;
enum _WIN32_IE_IE30 = 0x0300;
enum _WIN32_IE_IE302 = 0x0302;
enum _WIN32_IE_IE40 = 0x0400;
enum _WIN32_IE_IE401 = 0x0401;
enum _WIN32_IE_IE50 = 0x0500;
enum _WIN32_IE_IE501 = 0x0501;
enum _WIN32_IE_IE55 = 0x0550;
enum _WIN32_IE_IE60 = 0x0600;
enum _WIN32_IE_IE60SP1 = 0x0601;
enum _WIN32_IE_IE60SP2 = 0x0603;
enum _WIN32_IE_IE70 = 0x0700;
enum _WIN32_IE_IE80 = 0x0800;
enum _WIN32_IE_IE90 = 0x0900;
enum _WIN32_IE_IE100 = 0x0A00;

enum _WIN32_IE_NT4 = _WIN32_IE_IE20;
enum _WIN32_IE_NT4SP1 = _WIN32_IE_IE20;
enum _WIN32_IE_NT4SP2 = _WIN32_IE_IE20;
enum _WIN32_IE_NT4SP3 = _WIN32_IE_IE302;
enum _WIN32_IE_NT4SP4 = _WIN32_IE_IE401;
enum _WIN32_IE_NT4SP5 = _WIN32_IE_IE401;
enum _WIN32_IE_NT4SP6 = _WIN32_IE_IE50;
enum _WIN32_IE_WIN98 = _WIN32_IE_IE401;
enum _WIN32_IE_WIN98SE = _WIN32_IE_IE50;
enum _WIN32_IE_WINME = _WIN32_IE_IE55;
enum _WIN32_IE_WIN2K = _WIN32_IE_IE501;
enum _WIN32_IE_WIN2KSP1 = _WIN32_IE_IE501;
enum _WIN32_IE_WIN2KSP2 = _WIN32_IE_IE501;
enum _WIN32_IE_WIN2KSP3 = _WIN32_IE_IE501;
enum _WIN32_IE_WIN2KSP4 = _WIN32_IE_IE501;
enum _WIN32_IE_XP = _WIN32_IE_IE60;
enum _WIN32_IE_XPSP1 = _WIN32_IE_IE60SP1;
enum _WIN32_IE_XPSP2 = _WIN32_IE_IE60SP2;
enum _WIN32_IE_WS03 = 0x0602;
enum _WIN32_IE_WS03SP1 = _WIN32_IE_IE60SP2;
enum _WIN32_IE_WIN6 = _WIN32_IE_IE70;
enum _WIN32_IE_LONGHORN = _WIN32_IE_IE70;
enum _WIN32_IE_WIN7 = _WIN32_IE_IE80;
enum _WIN32_IE_WIN8 = _WIN32_IE_IE100;
enum _WIN32_IE_WINBLUE = _WIN32_IE_IE100;


enum NTDDI_WIN2K = 0x05000000;
enum NTDDI_WIN2KSP1 = 0x05000100;
enum NTDDI_WIN2KSP2 = 0x05000200;
enum NTDDI_WIN2KSP3 = 0x05000300;
enum NTDDI_WIN2KSP4 = 0x05000400;

enum NTDDI_WINXP = 0x05010000;
enum NTDDI_WINXPSP1 = 0x05010100;
enum NTDDI_WINXPSP2 = 0x05010200;
enum NTDDI_WINXPSP3 = 0x05010300;
enum NTDDI_WINXPSP4 = 0x05010400;

enum NTDDI_WS03 = 0x05020000;
enum NTDDI_WS03SP1 = 0x05020100;
enum NTDDI_WS03SP2 = 0x05020200;
enum NTDDI_WS03SP3 = 0x05020300;
enum NTDDI_WS03SP4 = 0x05020400;

enum NTDDI_WIN6 = 0x06000000;
enum NTDDI_WIN6SP1 = 0x06000100;
enum NTDDI_WIN6SP2 = 0x06000200;
enum NTDDI_WIN6SP3 = 0x06000300;
enum NTDDI_WIN6SP4 = 0x06000400;

enum NTDDI_VISTA = NTDDI_WIN6;
enum NTDDI_VISTASP1 = NTDDI_WIN6SP1;
enum NTDDI_VISTASP2 = NTDDI_WIN6SP2;
enum NTDDI_VISTASP3 = NTDDI_WIN6SP3;
enum NTDDI_VISTASP4 = NTDDI_WIN6SP4;

enum NTDDI_LONGHORN = NTDDI_VISTA;

enum NTDDI_WS08 = NTDDI_WIN6SP1;
enum NTDDI_WS08SP2 = NTDDI_WIN6SP2;
enum NTDDI_WS08SP3 = NTDDI_WIN6SP3;
enum NTDDI_WS08SP4 = NTDDI_WIN6SP4;

enum NTDDI_WIN7 = 0x06010000;
enum NTDDI_WIN8 = 0x06020000;
enum NTDDI_WINBLUE = 0x06030000;

enum OSVERSION_MASK = 0xFFFF0000;
enum SPVERSION_MASK = 0x0000FF00;
enum SUBVERSION_MASK = 0x000000FF;

enum _WIN32_WINNT = 0x0603;

enum NTDDI_VERSION = 0x06030000;
enum WINVER = _WIN32_WINNT;
1 change: 1 addition & 0 deletions src/core/sys/windows/winbase.d
Expand Up @@ -2258,6 +2258,7 @@ WINBASEAPI BOOL WINAPI SetEvent(HANDLE);
BOOL IsValidAcl(PACL);
BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
BOOL IsValidSid(PSID);
BOOL CreateWellKnownSid(WELL_KNOWN_SID_TYPE, PSID, PSID, PDWORD);
BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED);
BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE);
BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE);
Expand Down
142 changes: 141 additions & 1 deletion src/core/sys/windows/winnt.d
Expand Up @@ -2397,6 +2397,7 @@ struct TOKEN_OWNER {
PSID Owner;
}
alias TOKEN_OWNER* PTOKEN_OWNER;
enum SECURITY_MAX_SID_SIZE = 68;

struct TOKEN_PRIMARY_GROUP {
PSID PrimaryGroup;
Expand Down Expand Up @@ -2436,6 +2437,10 @@ struct TOKEN_USER {
}
alias TOKEN_USER* PTOKEN_USER;

struct TOKEN_MANDATORY_LABEL {
SID_AND_ATTRIBUTES Label;
}
alias PTOKEN_MANDATORY_LABEL = TOKEN_MANDATORY_LABEL*;
alias DWORD SECURITY_INFORMATION;
alias SECURITY_INFORMATION* PSECURITY_INFORMATION;
alias WORD SECURITY_DESCRIPTOR_CONTROL;
Expand All @@ -2451,6 +2456,18 @@ struct SECURITY_DESCRIPTOR {
PACL Dacl;
}
alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR;
enum TOKEN_ELEVATION_TYPE {
TokenElevationTypeDefault = 1,
TokenElevationTypeFull,
TokenElevationTypeLimited
}

alias PTOKEN_ELEVATION_TYPE = TOKEN_ELEVATION_TYPE*;

struct TOKEN_ELEVATION {
DWORD TokenIsElevated;
}
alias PTOKEN_ELEVATION = TOKEN_ELEVATION*;

enum TOKEN_INFORMATION_CLASS {
TokenUser = 1,
Expand All @@ -2469,7 +2486,32 @@ enum TOKEN_INFORMATION_CLASS {
TokenSessionReference,
TokenSandBoxInert,
TokenAuditPolicy,
TokenOrigin
TokenOrigin,
TokenElevationType,
TokenLinkedToken,
TokenElevation,
TokenHasRestrictions,
TokenAccessInformation,
TokenVirtualizationAllowed,
TokenVirtualizationEnabled,
TokenIntegrityLevel,
TokenUIAccess,
TokenMandatoryPolicy,
TokenLogonSid,
TokenIsAppContainer,
TokenCapabilities,
TokenAppContainerSid,
TokenAppContainerNumber,
TokenUserClaimAttributes,
TokenDeviceClaimAttributes,
TokenRestrictedUserClaimAttributes,
TokenRestrictedDeviceClaimAttributes,
TokenDeviceGroups,
TokenRestrictedDeviceGroups,
TokenSecurityAttributes,
TokenIsRestricted,
TokenProcessTrustLevel,
MaxTokenInfoClass // MaxTokenInfoClass should always be the last enum
}

enum SID_NAME_USE {
Expand All @@ -2485,6 +2527,103 @@ enum SID_NAME_USE {
}
alias SID_NAME_USE* PSID_NAME_USE;

enum WELL_KNOWN_SID_TYPE {
WinNullSid = 0,
WinWorldSid = 1,
WinLocalSid = 2,
WinCreatorOwnerSid = 3,
WinCreatorGroupSid = 4,
WinCreatorOwnerServerSid = 5,
WinCreatorGroupServerSid = 6,
WinNtAuthoritySid = 7,
WinDialupSid = 8,
WinNetworkSid = 9,
WinBatchSid = 10,
WinInteractiveSid = 11,
WinServiceSid = 12,
WinAnonymousSid = 13,
WinProxySid = 14,
WinEnterpriseControllersSid = 15,
WinSelfSid = 16,
WinAuthenticatedUserSid = 17,
WinRestrictedCodeSid = 18,
WinTerminalServerSid = 19,
WinRemoteLogonIdSid = 20,
WinLogonIdsSid = 21,
WinLocalSystemSid = 22,
WinLocalServiceSid = 23,
WinNetworkServiceSid = 24,
WinBuiltinDomainSid = 25,
WinBuiltinAdministratorsSid = 26,
WinBuiltinUsersSid = 27,
WinBuiltinGuestsSid = 28,
WinBuiltinPowerUsersSid = 29,
WinBuiltinAccountOperatorsSid = 30,
WinBuiltinSystemOperatorsSid = 31,
WinBuiltinPrintOperatorsSid = 32,
WinBuiltinBackupOperatorsSid = 33,
WinBuiltinReplicatorSid = 34,
WinBuiltinPreWindows2000CompatibleAccessSid = 35,
WinBuiltinRemoteDesktopUsersSid = 36,
WinBuiltinNetworkConfigurationOperatorsSid = 37,
WinAccountAdministratorSid = 38,
WinAccountGuestSid = 39,
WinAccountKrbtgtSid = 40,
WinAccountDomainAdminsSid = 41,
WinAccountDomainUsersSid = 42,
WinAccountDomainGuestsSid = 43,
WinAccountComputersSid = 44,
WinAccountControllersSid = 45,
WinAccountCertAdminsSid = 46,
WinAccountSchemaAdminsSid = 47,
WinAccountEnterpriseAdminsSid = 48,
WinAccountPolicyAdminsSid = 49,
WinAccountRasAndIasServersSid = 50,
WinNTLMAuthenticationSid = 51,
WinDigestAuthenticationSid = 52,
WinSChannelAuthenticationSid = 53,
WinThisOrganizationSid = 54,
WinOtherOrganizationSid = 55,
WinBuiltinIncomingForestTrustBuildersSid = 56,
WinBuiltinPerfMonitoringUsersSid = 57,
WinBuiltinPerfLoggingUsersSid = 58,
WinBuiltinAuthorizationAccessSid = 59,
WinBuiltinTerminalServerLicenseServersSid = 60,
WinBuiltinDCOMUsersSid = 61,
WinBuiltinIUsersSid = 62,
WinIUserSid = 63,
WinBuiltinCryptoOperatorsSid = 64,
WinUntrustedLabelSid = 65,
WinLowLabelSid = 66,
WinMediumLabelSid = 67,
WinHighLabelSid = 68,
WinSystemLabelSid = 69,
WinWriteRestrictedCodeSid = 70,
WinCreatorOwnerRightsSid = 71,
WinCacheablePrincipalsGroupSid = 72,
WinNonCacheablePrincipalsGroupSid = 73,
WinEnterpriseReadonlyControllersSid = 74,
WinAccountReadonlyControllersSid = 75,
WinBuiltinEventLogReadersGroup = 76,
WinNewEnterpriseReadonlyControllersSid = 77,
WinBuiltinCertSvcDComAccessGroup = 78,
WinMediumPlusLabelSid = 79,
WinLocalLogonSid = 80,
WinConsoleLogonSid = 81,
WinThisOrganizationCertificateSid = 82,
WinApplicationPackageAuthoritySid = 83,
WinBuiltinAnyPackageSid = 84,
WinCapabilityInternetClientSid = 85,
WinCapabilityInternetClientServerSid = 86,
WinCapabilityPrivateNetworkClientServerSid = 87,
WinCapabilityPicturesLibrarySid = 88,
WinCapabilityVideosLibrarySid = 89,
WinCapabilityMusicLibrarySid = 90,
WinCapabilityDocumentsLibrarySid = 91,
WinCapabilitySharedUserCertificatesSid = 92,
WinCapabilityEnterpriseAuthenticationSid = 93,
WinCapabilityRemovableStorageSid = 94
}
struct QUOTA_LIMITS {
SIZE_T PagedPoolLimit;
SIZE_T NonPagedPoolLimit;
Expand Down Expand Up @@ -3734,6 +3873,7 @@ enum DWORD
ES_SYSTEM_REQUIRED = 0x00000001,
ES_DISPLAY_REQUIRED = 0x00000002,
ES_USER_PRESENT = 0x00000004,
ES_AWAYMODE_REQUIRED = 0x00000040,
ES_CONTINUOUS = 0x80000000;

enum LATENCY_TIME {
Expand Down

0 comments on commit c8ca9b3

Please sign in to comment.