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 core/sys/windows/_secext.d)
8 */
9// Don't include this file directly, use core.sys.windows.security instead.
10module core.sys.windows.secext;
11version (Windows):
12@system:
13
14version (ANSI) {} else version = Unicode;
15pragma(lib, "secur32");
16
17import core.sys.windows.w32api, core.sys.windows.windef;
18
19static assert (_WIN32_WINNT >= 0x501,
20  "SecExt is only available on WindowsXP and later");
21
22enum 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}
34alias EXTENDED_NAME_FORMAT* PEXTENDED_NAME_FORMAT;
35
36extern (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
47version (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