1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC src/core/sys/windows/_secext.d)
8  */
9 // Don't include this file directly, use core.sys.windows.security instead.
10 module core.sys.windows.secext;
version(Windows)11 version (Windows):
12 @system:
13 
14 version (ANSI) {} else version = Unicode;
15 pragma(lib, "secur32");
16 
17 import core.sys.windows.w32api, core.sys.windows.windef;
18 
19 static assert (_WIN32_WINNT >= 0x501,
20   "SecExt is only available on WindowsXP and later");
21 
22 enum EXTENDED_NAME_FORMAT {
23     NameUnknown,
24     NameFullyQualifiedDN,
25     NameSamCompatible,
26     NameDisplay,          // =  3
27     NameUniqueId             =  6,
28     NameCanonical,
29     NameUserPrincipal,
30     NameCanonicalEx,
31     NameServicePrincipal, // = 10
32     NameDnsDomain            = 12
33 }
34 alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT;
35 
36 extern (Windows) {
37     BOOLEAN GetComputerObjectNameA(EXTENDED_NAME_FORMAT, LPSTR, PULONG);
38     BOOLEAN GetComputerObjectNameW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG);
39     BOOLEAN GetUserNameExA(EXTENDED_NAME_FORMAT, LPSTR, PULONG);
40     BOOLEAN GetUserNameExW(EXTENDED_NAME_FORMAT, LPWSTR, PULONG);
41     BOOLEAN TranslateNameA(LPCSTR, EXTENDED_NAME_FORMAT,
42       EXTENDED_NAME_FORMAT, LPSTR, PULONG);
43     BOOLEAN TranslateNameW(LPCWSTR, EXTENDED_NAME_FORMAT,
44       EXTENDED_NAME_FORMAT, LPWSTR, PULONG);
45 }
46 
version(Unicode)47 version (Unicode) {
48     alias GetComputerObjectNameW GetComputerObjectName;
49     alias GetUserNameExW GetUserNameEx;
50     alias TranslateNameW TranslateName;
51 } else {
52     alias GetComputerObjectNameA GetComputerObjectName;
53     alias GetUserNameExA GetUserNameEx;
54     alias TranslateNameA TranslateName;
55 }
56